Como rodar Servlet sem solicitação ? [RESOVIDO]

Pessoal a quem necessito de uma grande ajuda.

Preciso de uma solução para o seguinte problema:

Possuo um servlet que executa varias intruções, porem existem instruções que devem ser executadas sem a necessidade de uma solicitação de usuário, tipo uma execução a cada 1hora.

Como eu posso fazer isso?

Não sei quase nada de servlet minha classe extende a httpservlet

Public class MeuServlet extends httpservlet{

MeuServlet(){ ..Instruções ...}

Public void init(){ ..Instruções ...}

{E assim por diante...}

}

Pensei em criar um thread que iniciasse junto com o servlet mas o servlet só é construído quando existe uma solicitação e este processo precisa executar independente de existir qualquer solicitação…

Não sei se fui explicito na pergunta mas essa é a questão de não conseguir achar nada no google. NÂO SEI COMO PROCURAR!!!

Agradeço a atenção e peço uma ajuda a quem tem idéia!

Att,
Ricoldi

Por que precisa ser um Servlet a fazer isso?

Por que não usa o Quartz?

ricoldi,

Usa o Quartz.

Aqui tem um exemplo de Quartz + Servlet + EJB:

Abraço,
Eduardo

Pois é galera, aqui na empresa agente tem um scheduler, mas não gostaria de usar ele!

O servlet não possui um metodo que é executado 1 vez só? tipo na inicializaão do tomcat.

Quando o tomcat é iniciado ele não executa nada no servlet? nenhum metodo?

porque se ele executa algum metodo antes de começar a escutar solicitações eu poderia colocar uma thread executando em paralelo e colocar qualquer comando ali dentro.

Entendem ??

Agradeço as respostas Rafael Nunes e Esb.

Aguardo ajudas!

[quote=ricoldi]Pois é galera, aqui na empresa agente tem um scheduler, mas não gostaria de usar ele!

O servlet não possui um metodo que é executado 1 vez só? tipo na inicializaão do tomcat.

Quando o tomcat é iniciado ele não executa nada no servlet? nenhum metodo?

porque se ele executa algum metodo antes de começar a escutar solicitações eu poderia colocar uma thread executando em paralelo e colocar qualquer comando ali dentro.

Entendem ??

Agradeço as respostas Rafael Nunes e Esb.

Aguardo ajudas! [/quote]

Toda vez que o tomcat sobe a sua aplicação ele executa o método init() do seu servlet (se você sobrescreveu o init() de HttpServlet, logicamente).
Pra testar, sobrescreva o init() no seu servlet, coloca um System.out nele, configura a propriedade “load-on-startup” (1) do seu servlet no web.xml e observe o console.

[editado]
Mas por que você precisa fazer isso num servlet? Tem uma classe chamada TimerTask que pode te ajudar nisso. Dá uma olhada no Javadoc dela.
[/editado]

Você pode usar o método init, que é chamado quando o Servlet é instanciado pelo container.

Você também pode fazer um listener, que vai ser chamado quando o serviço do Tomcat subir, implementando a interface ServletContextListener.

Ainda assim acho que dá pra fazer só usando o Quartz…

Abraço!
Eduardo

amigos Adolfo Rodrigues e Esb

Estas soluções de vocês funcionam sem nenhuma requisição de http ?
ou é só depois que alguma requisição ocorre??

Agradeço a ajuda!

Caros… usei a solução do amigo Adolfo Rodrigues.

e funcionou corretamente:

<servlet>

        <servlet-name>FlexMxmlServlet</servlet-name>
        <display-name>MXML Processor</display-name>
        <description>Servlet wrapper for the Mxml Compiler</description>
        <servlet-class>flex.bootstrap.BootstrapServlet</servlet-class>

        <init-param>
            <param-name>servlet.class</param-name>
            <param-value>flex.mxml2.MxmlServlet</param-value>
        </init-param>

        <load-on-startup>1</load-on-startup> //Aqui é a chave!! grande Adolfo Rodrigues

    </servlet>

Agradeço a ajuda dos amigos aqui!

Outra alternativa seria usar os Listeners(ServletContextListener)