Árvore de páginas

Índice


Plataforma

Produto: TOTVS Fluig Plataforma

Tipo de API: Web service


Ocorrência

Ocorre o erro "Read Timed Out" ao acessar um WebService CXF via desenvolvimento sobre a plataforma. O método parece executar internamente, porém demora demais e esse erro aparece antes de terminar o processamento do método em questão. ~Poderiam me ajudar?


Causa

O Web Service está configurado para um tempo menor que o necessário ou utilizando o tempo padrão de trinta segundos, que não está sendo o suficiente.


Solução

Conforme exemplo abaixo, deve-se configurar o WebService CXF antes de enviar a execução do método.

MyWebService service = new MyWebService();
MyWebServicePortType client = service.MyWebServicePort();

org.apache.cxf.endpoint.Client cl = org.apache.cxf.frontend.ClientProxy.getClient(client);
 
org.apache.cxf.transport.http.HTTPConduit http = (org.apache.cxf.transport.http.HTTPConduit) cl.getConduit();
 
org.apache.cxf.transports.http.configuration.HTTPClientPolicy httpClientPolicy = new org.apache.cxf.transports.http.configuration.HTTPClientPolicy();
httpClientPolicy.setConnectionTimeout(0);
httpClientPolicy.setReceiveTimeout(0);
 
http.setClient(httpClientPolicy);

client.doSomething(...);

Outra forma possível é utilizando o método getCustomClient, conforme documentado segundo o link: Integração com Aplicativos Externo.

Este código foi retirado de um tutorial nos blogs de auxílio de desenvolvimento ao Apache CXF (link) e serve apenas para envios de requisições via stubs, não servindo para envios de XML puros, ou seja, fora do padrão da plataforma de envio de requisições a serviços.