2013-02-21 14 views
5

Ho una semplice applicazione Java che devo essere in esecuzione in qualsiasi momento (anche per avviarla automaticamente al riavvio del server).
Ho pensato a un service wrapper, ma la versione di Windows è stata pagata.
Esiste un modo per configurare Tomcat in modo che esegua automaticamente una classe specifica da un progetto o qualsiasi altra soluzione che possa fornire lo stesso risultato?esegui l'applicazione java non web su tomcat

+0

Un semplice avvio automatico non è sufficiente? – kutschkem

+0

Che tipo di programma è? Ha UI ecc.? diversamente è possibile creare un contextclist o un servlet di tomcat e nel metodo init è possibile avviare il programma. – Sap

+0

Non c'è interfaccia utente. L'applicazione invia semplicemente una richiesta POST ogni 10 minuti e analizza il risultato. Una cosa importante è che devo anche controllare l'output del registro (System.out) – pantominas

risposta

4

Penso che il tuo bisogno sia di avere un'applicazione (qualunque sia web o non web) che inizi con tomcat allo stesso tempo.

Bene, è necessario disporre di una semplice applicazione Web che registri un listener (che ascolta l'evento di avvio dell'applicazione, ovvero l'evento di avvio di Tomcat) e avvia la classe.

E 'molto semplice nel vostro web.xml si dichiara un ascoltatore come questo:

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

E in voi ApplicationListener classe che si implementa l'interfaccia ServletContextListener. Ecco un esempio:

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"); 
    } 



} 
0

dare uno sguardo su:

  1. http://wrapper.tanukisoftware.com/doc/english/download.jsp
  2. http://commons.apache.org/daemon/jsvc.html

Entrambi vi aiuterà ad eseguire l'applicazione Java come un servizio. Se tuttavia si desidera eseguire l'accoppiamento della propria applicazione con tomcat, è possibile implementare la propria semplice applicazione Web che esegue la propria applicazione. È possibile utilizzare

  1. servlet che inizia all'avvio del server (configurare questo in web.xml)
  2. filtro HTTP
  3. ServletContextListener.
Problemi correlati