2013-02-21 12 views
5

Mam prostą aplikację Java, która musi być uruchomiona przez cały czas (również do automatycznego uruchamiania po restarcie serwera).
Myślałem o opakowaniu usług, ale wersja systemu Windows jest płatna.
Czy istnieje sposób, w jaki mogę skonfigurować Tomcat, aby automatycznie uruchamiał określoną klasę z projektu lub jakiekolwiek inne rozwiązanie, które mogłoby dać taki sam wynik?uruchamiam aplikację java non web na tomcat

+0

Czy prosty autostart to za mało? – kutschkem

+0

Jaki to program? Czy ma interfejs użytkownika itp.? w przeciwnym razie możesz po prostu stworzyć tomcat contextListner lub serwlet, a metodą init możesz uruchomić swój program. – Sap

+0

Brak interfejsu użytkownika. Aplikacja wysyła żądanie POST co 10 minut i analizuje wynik. Jedną z ważnych rzeczy jest to, że muszę również sprawdzać dane wyjściowe dziennika (System.out) – pantominas

Odpowiedz

4

Wydaje mi się, że potrzebna jest aplikacja (niezależnie od sieci lub nie sieci), która zaczyna się od tomcat w tym samym czasie.

Cóż, potrzebujesz prostej aplikacji internetowej, która rejestruje odbiornik (który nasłuchuje zdarzenia uruchomienia aplikacji, tj. Zdarzenia startowego tomcat) i uruchamia twoją klasę.

To bardzo proste w web.xml zadeklarować słuchacza tak:

<listener> 
     <description>application startup and shutdown events</description> 
     <display-name>ApplicationListener</display-name> 
     <listener-class>com.myapp.server.config.ApplicationListener</listener-class> 
</listener> 

iw was ApplicationListener klasa zaimplementować interfejs ServletContextListener. Oto przykład:

import java.io.File; 

import javax.servlet.ServletContext; 
import javax.servlet.ServletContextEvent; 
import javax.servlet.ServletContextListener; 



/** 
* Class to listen for application startup and shutdown 
* 
* @author HBR 
* 
*/ 
public class ApplicationListener implements ServletContextListener { 
    private static Logger logger = Logger.getLogger(ApplicationListener.class); 

    @Override 
    public void contextDestroyed(ServletContextEvent servletContextEvent) { 
     logger.info("class : context destroyed"); 

    } 

    @Override 
    public void contextInitialized(ServletContextEvent servletContextEvent) { 
     ServletContext context = servletContextEvent.getServletContext(); 
     ///// HERE You launch your class 
     logger.info("myapp : context Initialized"); 
    } 



} 
Powiązane problemy