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

标签 java tomcat

我有一个简单的 Java 应用程序,我需要一直运行它(还要在服务器重启时自动启动)。
我想过一个服务包装器,但 Windows 版本是付费的。
有没有一种方法可以将 Tomcat 配置为自动运行项目中的特定类或可以提供相同结果的任何其他解决方案?

最佳答案

我认为您需要有一个同时以 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 接口(interface)。这是一个例子:

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");
    }



}

关于java - 在 tomcat 上运行非 web java 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14999028/

相关文章:

java - 在java中覆盖列表结果类型

java - JSF Facelets 许可证

tomcat - 运行在 Tomcat 上的 Errai 4

java - 将 XML 从 JSF textarea 传递到 Bean

java - 从非网络 intellij 项目为 Tomcat 制作 .war 文件

Tomcat:查看哪些线程正在使用数据库连接池

java - 比较java中的utf-8字符串

java - Tomcat Servlet性能: StringBuilder vs.直接写入

java - 为什么java注解语法有()[括号]?

tomcat - 为什么 WsSessionListener.sessionCreated() 在嵌入的 tomcat 9 中发出 `AbstractMethodError`?