2013-03-24 20 views
7

Sto provando a chiamare un metodo quando inizia la mia applicazione web. Lo scopo è quello di avviare un timer che funziona a intervalli definiti. come chiamo una funzione helloworld all'avvio dell'applicazione jboss 7.1 web?metodo di chiamata all'avvio del server

risposta

4

altri poi ContextListeners, si può anche avere un servlet in web.xml carico all'avvio:

<servlet> 
    <servlet-name>mytask</servlet-name> 
    <servlet-class>servlets.MyTaskServlet</servlet-class> 
    ... 
    <load-on-startup>1</load-on-startup> 
</servlet> 

Questo servlet può iniziare la vostra attività utilizzando qualsiasi mezzo che si desidera, si veda ad esempio questo link.

Ma non dovresti usare questo approccio, imho.

Utilizzare un framework provato/lib come quartz o uno strumento simile. Ci sono un sacco di problemi/problemi nell'esecuzione e nella sincronizzazione delle attività nei server Web ed è meglio utilizzare uno strumento collaudato piuttosto che ripetere gli errori che questi strumenti hanno già incontrato e risolto. Potrebbe volerci un po 'di tempo per cogliere ma eviterà molti mal di testa.

Jboss stesso ha alcuni strumenti a tale scopo: pianificazione e gestione delle attività. Mai usato così non posso raccomandare.

1

Utilizzare un ServletContextListener configurato nel proprio web.xml. Scrivi il codice che avvia il timer nel metodo contextInitialized.

2

Check out Quartz Scheduler. È possibile utilizzare un CronTrigger per sparare a intervalli definiti. Per esempio, ogni 5 minuti sarebbe simile a questa:

"0 0/5 * * * ?"

L'idea è quella di implementare l'interfaccia Job, che è il compito di eseguire, pianificare usando il SchedulerFactory/Scheduler, costruire l'inizio Job e CronTrigger e esso.

C'è un esempio molto chiaro here.

6

Se si desidera eseguire del codice prima che l'app Web soddisfi i propri client, è necessario un ServletContextListener.

Creare la classe ascoltatore

import javax.servlet.*; 

public class MyServletContextListener implements ServletContextListener { 

public void contextInitialized(ServletContextEvent e) { 
    //Call your function from the event object here 
} 

public void contextDestroyed(ServletContextEvent e) { 

} 
} 

Mettere la classe in WEB-INF/classes

Mettere un < ascoltatore> elemento nel file web.xml.

<listener> 
    <listener-class> 
    com.test.MyServletContextListener 
    </listener-class> 
</listener> 

Spero che questo aiuti.

+0

posso aggiungere il codice di avvio del server HTTP all'interno del contestoModo inizializzato – Hema

Problemi correlati