Como eu configuro o timeout do JAX-WS webservice client (javax.xml.ws.client.receiveTimeout) nas configurações do JBoss VM client?

Se você se deparou com esse problema, percebeu que a documentação do JBoss para esse assunto é bem escarço na internet. Não há material oficial e muito menos artigos. Nos deparamos com este problema no trabalho onde precisamos aumentar o Timeout do Web service, mas não tínhamos autorização para modificar o código da aplicação.

Se já foi difícil encontrar exemplo de códigos para a modificação programática do timeout, modificá-lo via configurações foi impossível.

Depois de dias, um colega encontrou o código abaixo para modificar o timeout via código abaixo, encontrado na documentação do Jboss:

public void testConfigureTimeout() throws Exception
{
   //Configura o tempo máximo de espera para que uma conexão seja estabelecida
   ((BindingProvider)port).getRequestContext().put("javax.xml.ws.client.connectionTimeout", "6000");

   //Configura o tempo máximo de espera até que uma resposta seja recebida
   ((BindingProvider) port).getRequestContext().put("javax.xml.ws.client.receiveTimeout", "1000");

   port.echo("Teste de Timeout");
}

Mas ainda hoje não encontramos uma solução para modificação através de algum parâmetro da configuração da máquina virtual do JBoss (VM client). A solução mais próximas que encontramos foi apenas para sistemas que utilizam o Frameworks CXF e Spring (Segundo o artigo, o único modo conhecido até hoje):

Adicione um arquivo cxf.xml ao classpath da aplicação (ex.: WEB-INF/classes ) com o código abaixo:

<?xml version="1.0"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:beans="http://www.springframework.org/schema/beans"
        xmlns:http-conf="http://cxf.apache.org/transports/http/configuration"
        xsi:schemaLocation="
            http://cxf.apache.org/transports/http/configuration
            http://cxf.apache.org/schemas/configuration/http-conf.xsd
            http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd">

        <http-conf:conduit name="*.http-conduit">
            <http-conf:client ReceiveTimeout="4000"/>
        </http-conf:conduit>

    </beans>

O problema é que como o sistema utiliza as classes nativas javax.xml.ws e não um framework, não conseguimos uma forma de realizar esta tarefa.

Vocês conhecem alguma forma? Deixe nos comentários!

Natural de Salvador-BA, é graduado em Analise de Sistemas pela Universidade Católica do Salvador (UCSal, 2003), e Especialista em Engenharia de Software pela Universidade Salvador (2010).

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *