Reiniciando o tomcat a classe que envia email só executa uma vez  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
rico700
Thread.start()

Membro desde: 12/06/2008 14:07:41
Mensagens: 30
Offline

Ola amigos,
eu botei um init() em um servlet e mandei ele executar quando inicia o tomcat, nesse init() eu coloquei a chamada do método que envia emails.
O problema é que quando o método executa, ou seja, quando inicio o tomcat ele envia só uma vez o email e depois não envia mais os emails quando eu solicito o envio. Tirando essa chamada no init() ele envia emails normalmente mas quando eu coloco essa função para iniciar com o tomcat, não funciona mais.
Função init() que está no servlet é assim

E a função que envia emails é essa:

Se algue puder me dá uma luz,
valeu.
ramilani12
GUJ Master
[Avatar]

Membro desde: 11/03/2005 01:23:30
Mensagens: 1944
Localização: Curitiba-PR
Offline

Prq o metodo init é chamado uma unica vez pelo ServletContainer, seu problema seria resolvido se colocasse esse envio de e-mails nos metodos service , doGet ou doPost

my delicious|follow me|linkedin
[Email] [ICQ]
pimenta
Java Ninja
[Avatar]

Membro desde: 14/04/2008 15:33:08
Mensagens: 293
Localização: Niterói/RJ
Offline

Procura saber sobre o ciclo de vida do Servlet, pode ser que isso te explique o porque de ser executado somente uma vez.

ramilani12, para fazer isso no método service() ele não teria que reescrevê-lo? Caso a resposta seja afirmativa, isso não é nem um pouco indicado. O melhor mesmo é fazer como você mesmo disse, utilizar no doGet() ou no doPost().

Abraços,

--------------------------------------------

PIMENTA

--------------------------------------------
[MSN]
rico700
Thread.start()

Membro desde: 12/06/2008 14:07:41
Mensagens: 30
Offline

amigos, obrigado pela resposta.
Mas o problema é que está executando uma vez nessa classe, tudo bem é pra iniciar uma vez mesmo pois coloquei só para executar no inicio do tomcat.
Mas na minha aplicação eu chamo esse metodo de email outras vezes depois dessa classe que tem o init(), e não funciona.
Ele já está em outro servlet e não funciona entenderam?

obrigado
furutani
JWizard
[Avatar]

Membro desde: 11/10/2003 23:58:51
Mensagens: 2995
Localização: Iacri-SP e São Paulo-SP
Offline

Já experimentou jogar o conteudo do método init() dentro do método doGet() ou doPost()?

Até mais,
Roberto Jundi Furutani


Sun Certified Business Component Developer 1.3
Sun Certified Web Component Developer
Sun Certified Java Programmer
SAP Certified Development Associate - ABAP with SAP NetWeaver 7.0

[WWW]
ramilani12
GUJ Master
[Avatar]

Membro desde: 11/03/2005 01:23:30
Mensagens: 1944
Localização: Curitiba-PR
Offline

pimenta wrote:Procura saber sobre o ciclo de vida do Servlet, pode ser que isso te explique o porque de ser executado somente uma vez.

ramilani12, para fazer isso no método service() ele não teria que reescrevê-lo? Caso a resposta seja afirmativa, isso não é nem um pouco indicado. O melhor mesmo é fazer como você mesmo disse, utilizar no doGet() ou no doPost().

Abraços,



E qndo vc herda da HttpServlet vc não reescreve tbm os métodos doGet e doPost ?

my delicious|follow me|linkedin
[Email] [ICQ]
pimenta
Java Ninja
[Avatar]

Membro desde: 14/04/2008 15:33:08
Mensagens: 293
Localização: Niterói/RJ
Offline

ramilani12 wrote:
E qndo vc herda da HttpServlet vc não reescreve tbm os métodos doGet e doPost ?


Mas o service() não é exatamente a mesma coisa que o doGet() e o doPost().
O service() é executado logo após o init() ser terminado com sucesso e é responsável em chamar doGet() ou doPost(). Além disso, pelo que já li reescrever o service() não é indicado.
Em relação a reescrever os métodos doGet() e doPost() eles estão lá para serem reescritos mesmo, diferentemente do service().

--------------------------------------------

PIMENTA

--------------------------------------------
[MSN]
rico700
Thread.start()

Membro desde: 12/06/2008 14:07:41
Mensagens: 30
Offline

oi amigos, eu botei no método get() e não funcionou.
Será que fiz alguma coisa errada?
Não executou o que eu queria fazer.
Sem o init() ele executa?

att,

This message was edited 1 time. Last update was at 05/12/2008 13:01:07

ramilani12
GUJ Master
[Avatar]

Membro desde: 11/03/2005 01:23:30
Mensagens: 1944
Localização: Curitiba-PR
Offline

lançou alguma exceção?


my delicious|follow me|linkedin
[Email] [ICQ]
rico700
Thread.start()

Membro desde: 12/06/2008 14:07:41
Mensagens: 30
Offline

Não apenas não enviou o email.
Fica assim a classe doGet()?

This message was edited 1 time. Last update was at 05/12/2008 13:21:41

ramilani12
GUJ Master
[Avatar]

Membro desde: 11/03/2005 01:23:30
Mensagens: 1944
Localização: Curitiba-PR
Offline

rico700 wrote:Não apenas não enviou o email.
Fica assim a classe doGet()?
....


Obviamente vc não sobrescreveu o metodo doGet() veja a sintaxe:


my delicious|follow me|linkedin
[Email] [ICQ]
rico700
Thread.start()

Membro desde: 12/06/2008 14:07:41
Mensagens: 30
Offline

Desculpa a minha ignorancia
mas como assim sobrescrever o método doGet()?

valeu pela ajuda
ramilani12
GUJ Master
[Avatar]

Membro desde: 11/03/2005 01:23:30
Mensagens: 1944
Localização: Curitiba-PR
Offline

Vc não está herdando da Classe HttpServlet?
os metodos doGet , doPost , service , doPut, doDelete e etc, vc os implementa conforme a sua necessidade , se vc não os implementou o ServletContainer invoca a implementação default.

veja o javadoc da classe HttpServlet:

http://java.sun.com/javaee/5/docs/api/javax/servlet/http/HttpServlet.html

my delicious|follow me|linkedin
[Email] [ICQ]
rico700
Thread.start()

Membro desde: 12/06/2008 14:07:41
Mensagens: 30
Offline

resolvi o problema, tentei com a classe listener e deu certo.

valeu ai pela atenção.
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team