Servlet inciando duas vezes?

6 respostas
O

Tenho o trecho :

<servlet>
	<description>
	</description>
	<display-name>
	CSManagerServlet</display-name>
	<servlet-name>CSManagerServlet</servlet-name>
	<servlet-class>com.lucent.csmanager.web.CSManagerServlet</servlet-class>
	<load-on-startup>1</load-on-startup>		
</servlet>

dentro do meu web.xml no tomcat 5.5. O que acontece de estranho é que esse servlet tem um método:
System.out.println(“inciei!!!”);

E quando inicio o tomcat, a menssagem aparece duas vezes, como se o servlet fosse inicializado duplamente.

Isso está correto?

De quelquer forma, gostaria de saber como incializar um determinado servlet durante o startup da aplicação web.

Obrigado pela força.

6 Respostas

sergiotaborda

quote=OFofy
Isso está correto?
[/quote]

Sim. Um servlet pode ser instanciado qualquer numero de vezes. Isso cabe ao web container decidir.

Se vc quer correr um código apenas uma vez, use a interface ServletContextListener. (load-on-startup não serve para correr algo apenas uma vez, a menos que vc controle isso explicitamente)

O

Poderia me dar um exemplo?

Obrigado…

pcalcado

Um servlet só pode ser isntanciado uma vez, a menos que usando Single Thread Model.

Seu servlet tem SingleThreadModel? Em que método fica o código que está sendo repetido?

O

Provavelmente meu servlet não tem Single Thread Model. Poderia me dar um exemplo de como implementar isso?

O método é irrelevante… É um método qualquer dentro de um servlet(imagine que fosse o construtor…). Só que eu gostaria de inicializar essa classe uma só vez durante o startup do tomcat…

Obrigado adiantado…

lmprates

OFofy,

para executar somente 1 vez um código na inicialização de sua servlet, é importante que você crie o método init e coloque neste método o seu código, provavelmente por isso o pcalcado perguntou em que método fica seu código.

L

Estou tendo um problema semelhante.
O fluxo passa pelo init(ServletConfig config) apenas uma vez, ou seja, tenho apenas uma instância do servlet, no entanto, o service(…) é chamado mais de uma vez.
Já verifiquei muitas coisas, fiz pesquisas mas até agora sem progresso.

Alguém tem alguma dica?

Grato

Criado 6 de julho de 2007
Ultima resposta 11 de set. de 2007
Respostas 6
Participantes 5