Interromper servlet

6 respostas
P

Olá todos !

Tenho um servlet que gera numeros primos e que possui um tempo de execução de aproximadamente 10 segundos. Preciso depois de um determinado tempo terminar a execução deste servlet (por exempo 3 segundo.).
Sei que o comando destroy() termina a execução de um servlet, mas implemente porém não tive êxito.

Alguem poderia me exemplificar como poderia fazer para conseguir o meu objetivo ? ou seja interromper a execução da servlet de primos ?

preciso muito da ajuda de vocês desde já muito grado pelas considerações.

6 Respostas

F

O método destroy é chamado pelo contêiner qd este estiver descarregando os servlets em memória num shut-down.
Vc pode dar um return.
Se vc quiser que ela pare de executar por um certo tempo e depois continue, vc então pode usar o método wait(milliseconds). Só que neste caso nenhum outro método poderá ser chamado até que o servlet “acorde”.

P

Oi fabiophx !

obrigado por ter me respondido. porém eu não sei como usar o destroy. O meu conteiner é Tomcat. Eu tenho que progrmar no tomcat ? Eu pensava que era só usar destroy(); e cancelava o servlet.

o que gostaria era fazer com que um classe cancele a execução de um servlet.
o método wait, thread.sleep interrompem sim por um tempo que eu desejar.

mas o que gostaria era saber como usar o destroy. Sei que é chamado pelo contêiner… mas não sei alguem sabe como CANCELO UM SERVLET ?

Como uso o DETROY ?

Valeu turma… ! A saga continua…

S

O destroy() é o método que o container chama quando o servlet acaba. Ele não serve pra interromper um servlet.

Que mal lhe pergunte, pra que você quer interromper ele?

P

Olá Schuenemann !
Quero cancelar o processo de servlets demorados.
Você conheceria alguma outra forma de conseguir isso ?
Ou seja cancelar um servlet ?

Quando executo o codigo abaixo em uma classe com main ele opera de acordo com o que quero…

for(int i = 1; i <= 9999999; i++ ){
           if (i == 9973) System.exit(0);
                 }

Mas se faço isso em um servlet… não funciona…

Como poderia fazer ?

Grato a todos que puderem ajudar…

F

PitsBrown, realmente não sei como cancelar um servlet.
O que vc pode fazer é criar uma classe com este processo demorado que extenda java.lang.Thread onde vc pode usar o interrupt().
Tb vc pode fazer o mesmo extendendo java.util.TimerTask que possui um método cancel(). Neste caso pode usá-la sozinha ou juntamente com java.util.Timer.schedule().

E na mesma linha ainda vc pode usar as classes java.util.Observer e java.util.Observable. Neste caso vc irá ter duas classes uma que estende Observer e outra que estend Observable e implementa Runnable.

Na Observer vc irá criar um objeto da Observable e acrescentar Observer a ela:

Observable observable = new ClassObservable();

observable.addObserver(this);

Ainda na Observer vc terá que sobreescrever o método update que é chamado toda vez que na classe Observable vc executar notifyObservers(); neste caso vc pode destruir o objeto Observable, atribuindo null ou dar um wait.

Espero não ter complicado mais.

P

Valeu fabiophx !
É muito bom contar com pessoas como vc !

Vc foi bem claro… agora vou testar e te retorno se consegui !!!

Flw amigão !

Criado 2 de maio de 2006
Ultima resposta 5 de mai. de 2006
Respostas 6
Participantes 3