Como destruir servlet?

6 respostas
G

Olá a todos!
Pessoal,
como faço para destruir um servlet, isto é, garantir que na próxima vez que ele for chamado ele passe pelo init() novamente?

6 Respostas

G

para destruir um servlet use o método destroy()...

public void destroy() 
{

}

Os servlets permanecem em execução até que sejam removidos, Quando um servidor remove um servlet, ele executa o método destroy() do mesmo....
O método é executado somente um vez. O servidor não executará o método destroy() novamente até que o servlet seja recarregado e reinicializado...

:wink:

M

tu quer q ele execute o código em init() sempre q hourver uma requisição? :roll: se for isso, é só implementar em um outro método esse código, e chamá-lo de doGet(), ou doPost()

P

Alguns containers permitem que você especifique que cada request será tratado por uma instância independente do Servlet, não sei se isto está na especificação ou não, mas é extremamente ruim em termos de performance, visto que se você deixar o Servlet ser comparilhado vai evitar instanciações desnecessárias.

Faça como o matheus disse, se você tiver dificuldades talvez haja lógica demais no seu servlet.

M

oq o pcalcado mensionou acredito ter sido com relação a fazer servlets implementando SingleThreadModel, oq é totalmente desencorajado a se fazer realmente, mas ele não vai chamar o init() a cada requisição, simplesmente vai usar instancias diferentes do mesmo servlet pras requisições, e não threads, mas isso é assunto de thread-safe, e no caso de servlets, o ideal é sincronizar o recurso, normalmente a session… :slight_smile:

G

Só quero (eventualmente) terminar o servlet sem ter que encerrar o servidor… E depois iniciá-lo novamente quando necessário (não é com frequencia).
como faço isto?

M

hummm… dificil resposta, acho q o ideal é tu explicar pra gente o pq de tu querer fazer isso, pra gente tentar listar oq se dá pra fazer… pq o destroy() é um método do ciclo de vida do Servlet… não é só chega destruindo tudo e deu… heheaheau, e tu não pode simplesmente dar new MeuServlet() q vai inicializar ele, não… tu só vai instanciar um novo objeto, mas não será servletness, pois não terá referencia a um ServletConfig, a request, response… etc…

Criado 27 de abril de 2005
Ultima resposta 27 de abr. de 2005
Respostas 6
Participantes 4