2013-03-24 8 views
7

Próbuję wywołać metodę, gdy uruchomi się moje webaplikacja. Celem jest uruchomienie timera, który działa w określonych odstępach czasu. Jak mogę wywołać funkcję helloworld, gdy uruchomi się moja aplikacja internetowa jboss 7.1?metoda wywołania przy uruchomieniu serwera

Odpowiedz

4

inne niż ContextListeners, można również serwletu w web.xml załadunku na starcie:

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

Aplet ten można uruchomić zadanie przy użyciu co oznacza, że ​​chcesz, patrz na przykład ten link.

Ale nie powinieneś używać tego podejścia, imho.

Użyj sprawdzonego framework/lib, takiego jak quartz lub podobnego narzędzia. Istnieje wiele problemów/problemów związanych z uruchamianiem i synchronizowaniem zadań na serwerach internetowych i lepiej jest używać sprawdzonego narzędzia niż powtarzać błędy, które te narzędzia już napotkały i rozwiązały. Może trochę potrwać, ale pozwoli uniknąć wielu bólów głowy.

Sam Jboss ma kilka narzędzi do tego celu: planowanie i zarządzanie zadaniami. Nigdy nie używane, więc nie polecam.

2

Zapoznaj się z Quartz Scheduler. Możesz użyć CronTrigger, aby strzelać w określonych odstępach czasu. Na przykład, co 5 minut będzie wyglądać następująco:

"0 0/5 * * * ?"

Chodzi o to, aby implementować interfejs Job który jest zadanie, aby uruchomić, zaplanować go za pomocą SchedulerFactory/Scheduler, budować rozpoczęcia Job i CronTrigger i to.

Istnieje bardzo wyraźny przykład: here.

6

Jeśli chcesz uruchomić kod, zanim Twoja aplikacja internetowa obsłuży któregoś z klientów, potrzebujesz ServletContextListener.

Stwórz swoją klasę słuchacza

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) { 

} 
} 

Put klasy w WEB-INF/classes

Umieść < słuchacza> elementu w pliku web.xml.

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

Mam nadzieję, że to pomoże.

+0

Czy mogę dodać kod startowy serwera HTTP w kontekścieInformedized method – Hema