2012-12-11 22 views
6

Powiel możliwe:
tomcat auto start servlet
How do I load a java class (not a servlet) when the tomcat server startsJak uruchomić określony kod Java na starcie Tomcat lub przy wdrażaniu aplikacji?

Mam aplikacji internetowej uruchomionej na serwerze Tomcat. Chcę uruchomić określony kod w mojej aplikacji raz, gdy Tomcat się uruchomi lub gdy aplikacja zostanie wdrożona. Jak mogę to osiągnąć? Dzięki

+5

Szukasz czegoś, co nazywa „ServletContextListener”, ma metody, których potrzebujesz. –

+0

Zobacz https://stackoverflow.com/questions/3468150/using-special-auto-start-servlet-to-initialize-on-startup-and-share-application – rogerdpack

Odpowiedz

25

Musisz zaimplementować interfejs ServletContextListner i wpisać w nim kod, który chcesz uruchomić na starcie systemu tomcat.

Oto krótki opis na ten temat.

ServletContextListner znajduje się w pakiecie javax.servlet.

Oto krótki kod, jak to zrobić.

public class MyServletContextListener implements ServletContextListener { 

    @Override 
    public void contextDestroyed(ServletContextEvent arg0) { 
    //Notification that the servlet context is about to be shut down. 
    } 

    @Override 
    public void contextInitialized(ServletContextEvent arg0) { 
    // do all the tasks that you need to perform just after the server starts 

    //Notification that the web application initialization process is starting 
    } 

} 

I trzeba skonfigurować go w deskryptorze wdrożenia web.xml

<listener> 
    <listener-class> 
     mypackage.MyServletContextListener 
    </listener-class> 
</listener> 
+0

fajne, spróbuję, dzięki! –

+0

Zajrzyj także do adnotacji @WebListener. – theglauber

+0

Potrzebowałem tego i działa. Istnieje również sposób na "ładowanie przy uruchamianiu". Mój problem polega na tym, że obie metody inicjalizują klasę dwukrotnie. Dowolny pomysł? Widziałem ten problem tutaj http://stackoverflow.com/questions/7301088/tomcat-servlet-init-called-twice-upon-startup. Po prostu nie rozumiem, co robić. Niezbyt dobrze zna Javę. –

Powiązane problemy