我有一个简单的Java应用程序,需要一直运行(在服务器重新启动时也要自动启动)。
我考虑过使用服务包装器,但Windows版本需要付费。
是否可以配置Tomcat自动运行特定项目的类或其他解决方案以达到相同的结果?
我有一个简单的Java应用程序,需要一直运行(在服务器重新启动时也要自动启动)。
我考虑过使用服务包装器,但Windows版本需要付费。
是否可以配置Tomcat自动运行特定项目的类或其他解决方案以达到相同的结果?
我想你需要一个应用程序(无论是Web还是非Web),它可以同时启动Tomcat。
好的,您需要一个简单的Web应用程序,注册一个监听器(监听应用程序启动事件,即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类中,您实现了ServletContextListener接口。以下是一个示例:
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");
}
}
快速谷歌搜索显示了许多选项:
最后,如果您想将其放入Tomcat(作为Web应用程序的一部分),则可以使用Quartz Scheduler之类的东西。
请看一下:
这两种方法都可以帮助您将Java应用程序作为服务运行。但是,如果您想将应用程序与Tomcat配对运行,您可以实现自己的简单Web应用程序来运行您的应用程序。您可以使用以下任一方法: