我有一个简单的 Java 应用程序,我需要一直运行(也可以在服务器重新启动时自动启动)。
我曾考虑过服务包装器,但 Windows 版本是付费的。
有没有一种方法可以配置 Tomcat 以自动运行项目中的特定类或任何其他可以产生相同结果的解决方案?
问问题
6321 次
3 回答
5
我认为您需要有一个同时以 tomcat 开头的应用程序(无论是 Web 还是非 Web)。
好吧,您需要一个简单的 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");
}
}
于 2013-02-21T10:39:36.527 回答
0
看看:
- http://wrapper.tanukisoftware.com/doc/english/download.jsp
- http://commons.apache.org/daemon/jsvc.html
两者都将帮助您将 java 应用程序作为服务运行。但是,如果您想将您的应用程序与 tomcat 结合运行,您可以实现自己的简单 Web 应用程序来运行您的应用程序。你可以使用
- 在服务器启动时启动的 servlet(在 web.xml 中配置)
- HTTP 过滤器
- Servlet上下文监听器。
于 2013-02-21T10:08:14.243 回答
0
一个快速的谷歌显示了一堆选项:
- Java Service Wrapper(可能是提到的那个)
- 另一个 Java 服务包装器(基于 JSW 并设计为在很大程度上兼容)
- Windows 服务包装器(任何应用即服务,仅限 Windows)
- Commons Daemon(Tomcat 使用的那个)
最后,如果您希望在 Tomcat 中使用它(作为 Web 应用程序的一部分),则可以使用Quartz Scheduler之类的东西。
于 2013-02-21T10:05:46.197 回答