Fala aí rapaziada, quanto tempo!
Estou tendo um problema em atribuir o timeout na chamada de um webservices a partir de um EJB
Usando Weblogic como container.
[edit]
O Web Service não está no mesmo servidor, se eu atribuir um timeout para o JTA a transação exprira sem uma exception e não cancela a chamada anterior.
Esse processo inicia a partir de um MDB, quando JTA expria o EJB consome a mensagem JMS de novo e de novo e de novo e cada chamada para o web service continua ativa no Servidor WS.
[/edit]
Meus passos
- Criados os stubs com wsimport
- Criada uma classe proxy para chamar o webservice
- Webservice chamado a partir do EJB.
Já atribuí as configurações abaixo:
// Setting timeout
BindingProvider bindingProvider = (BindingProvider) getService();
Map<String, Object> context = bindingProvider.getRequestContext();
context.put(JAXWSProperties.CONNECT_TIMEOUT, 5000);
context.put(JAXWSProperties.REQUEST_TIMEOUT, 20000);
Se eu chamo o webservice a partir de um programa client/server (como Swing ou um simples main) funciona corretamente lançando um SocketTimeoutException, mas chamando pelo EJB o timeout atribuido não é respeitado.
Também tentei atribuir o timeout em um annotation no EJB, mas não funcionou também.
Also tried to set a annotation to EJB method, but not worked either.
@AccessTimeout(value=2000)
Alguma idéia de como atribuir o timeout em uma chamada de Webservices de um EJB no Weblogic.
Grande abraço para todos