在tomcat上运行非web java应用程序

时间:2013-02-21 09:46:47

标签: java tomcat

我有一个简单的Java应用程序,我需要一直运行(也可以在服务器重启时自动启动) 我曾考虑过服务包装器,但是Windows版本已付费 有没有办法可以配置Tomcat自动从项目中运行特定的类或任何其他可以产生相同结果的解决方案?

3 个答案:

答案 0 :(得分:4)

我认为你需要的是一个同时以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");
    }



}

答案 1 :(得分:0)

快速谷歌显示了一系列选项:

最后,如果你想在Tomcat中(作为网络应用程序的一部分),那么像Quartz Scheduler那样。

答案 2 :(得分:0)

看看:

  1. http://wrapper.tanukisoftware.com/doc/english/download.jsp
  2. http://commons.apache.org/daemon/jsvc.html
  3. 两者都可以帮助您将Java应用程序作为服务运行。 但是,如果您希望使用tomcat运行应用程序,则可以实现运行应用程序的简单Web应用程序。你可以使用

    1. 在服务器启动时启动的servlet(在web.xml中配置)
    2. HTTP过滤器
    3. 的ServletContextListener。