Duvida com timeout de webservice

3 respostas
D

Olá a todos!

Estou com um problema que é o seguinte:

Tenho um método de webservice e preciso colocar um timeout nele, de modo que ao estourar o tempo as operacoes pendentes são abortadas. Após isso deve-se inserir um registro no banco informando que ocorreu um timeout no servico.

Eu pensei em usar um Thread.sleep(n) e criar um thread que faça ó processamento e ao estourar o tempo eu uso um thread.stop() ou interrupt(), ou tbm fazer com o que o serviço chame um outro servico que seja assincrono(ñão sei se isso da certo)…

mas nenhuma dessas soluções me parecem interessantes.

Alguém tem algum sugestão?Já fez algo parecido?

Obreigado a Todos!

3 Respostas

M

Buenas !!

Eu tive um problema igual, e também tinha pensado nesta “solução” utilizando threads, porém no meu caso eu uso JAX-WS e resolvi da seguinte forma:

((BindingProvider) wsPort).getRequestContext().put("com.sun.xml.ws.connect.timeout", connectionTimeOut);
        ((BindingProvider) wsPort).getRequestContext().put("com.sun.xml.ws.request.timeout", socketTimeOut);
felipeguerra

Bem, para não abrir um novo tópico, vou nesse mesmo…

Eu fiz exatamente o que o amigo aí em cima fez, mas o Timeout não funciona, na verdade, nem tão igual assim:

import javax.xml.ws.BindingProvider;

((BindingProvider) this.myPort).getRequestContext().put("com.sun.xml.internal.ws.request.timeout", 20000);

O que será?

felipeguerra

Esquece, assim funciona:

((BindingProvider) wsPort).getRequestContext().put("com.sun.xml.ws.connect.timeout", connectionTimeOut);

:smiley:

SocketTimeoutException
Criado 31 de março de 2010
Ultima resposta 26 de jan. de 2011
Respostas 3
Participantes 3