在Tomcat上运行非Web Java应用程序

8

我有一个简单的Java应用程序,需要一直运行(在服务器重新启动时也要自动启动)。

我考虑过使用服务包装器,但Windows版本需要付费。

是否可以配置Tomcat自动运行特定项目的类或其他解决方案以达到相同的结果?


一个简单的自启动不够吗? - kutschkem
这是什么类型的程序?它有用户界面吗?否则,您可以创建一个Tomcat ContextListener或Servlet,在init方法中启动您的程序。 - Sap
没有用户界面。该应用程序每10分钟只是发送一个POST请求并解析结果。 重要的一点是我还需要检查日志输出(System.out)。 - pantominas
3个回答

6

我想你需要一个应用程序(无论是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");
    }



}

0

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接