2013-02-21 3 views
5

У меня есть простое приложение Java, которое мне нужно запускать в любое время (также для автоматического запуска при перезагрузке сервера).
Я подумал об обслуживающей оболочке, но Windows-версия оплачивается.
Есть ли способ настроить Tomcat для запуска определенного класса из проекта автоматически или любого другого решения, которое может дать тот же результат?запустить приложение не веб-java на tomcat

+0

Простой автозапуск недостаточно? – kutschkem

+0

Какая программа? Имеет ли он интерфейс и т. Д.? В противном случае вы можете просто создать tomcat contextListner или сервлет, а в методе init вы можете запустить свою программу. – Sap

+0

Интерфейса пользователя нет. Приложение просто отправляет запрос POST каждые 10 минут и анализирует результат. Важно отметить, что мне также нужно следить за выходом журнала (System.out) – pantominas

ответ

4

Я думаю, что вам нужно иметь приложение (независимо от Интернета или не веб-сайта), которое начинается с tomcat в одно и то же время.

Нужно иметь простое веб-приложение, которое регистрирует слушателя (который прослушивает событие запуска приложения, то есть событие запуска tomcat) и запускает ваш класс.

Это очень просто в вашем web.xml вы объявляете слушателя, как это:

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

И в вас ApplicationListener класс вы реализуете интерфейс контекста сервлета. Вот пример:

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

Быстрый Google показывает кучу вариантов:

Наконец, если вы хотите его в Tomcat (как часть веб-приложения), то что-то вроде Quartz Scheduler.

0

Посмотрите на:

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

Оба поможет вам запустить приложение Java в качестве службы. Если вы хотите запустить пару своего приложения с помощью tomcat, вы можете реализовать свое собственное веб-приложение, которое запускает ваше приложение. Вы можете использовать либо

  1. сервлет, который начинается при запуске сервера (настроить это в web.xml)
  2. HTTP фильтр
  3. контекста сервлета.
Смежные вопросы