【问题标题】:run non web java application on tomcat在 tomcat 上运行非 web java 应用程序
【发布时间】:2013-02-21 09:46:46
【问题描述】:

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

【问题讨论】:

  • 简单的自动启动还不够吗?
  • 这是什么程序?它有用户界面等吗?否则,您可以只创建一个 tomcat contextListner 或一个 servlet,然后在 init 方法中启动您的程序。
  • 没有用户界面。该应用程序只是每 10 分钟发送一个 POST 请求并解析结果。一件重要的事情是我还需要继续检查日志输出(System.out)

标签: java tomcat


【解决方案1】:

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



}

【讨论】:

    【解决方案2】:

    看看:

    1. http://wrapper.tanukisoftware.com/doc/english/download.jsp
    2. http://commons.apache.org/daemon/jsvc.html

    两者都将帮助您将 java 应用程序作为服务运行。 但是,如果您想将您的应用程序与 tomcat 结合运行,您可以实现自己的简单 Web 应用程序来运行您的应用程序。您可以使用任一

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

    【讨论】:

      【解决方案3】:

      快速谷歌显示一堆选项:

      最后,如果您想在 Tomcat 中使用它(作为 Web 应用程序的一部分),则可以使用 Quartz Scheduler 之类的东西。

      【讨论】:

        猜你喜欢
        • 2012-08-04
        • 1970-01-01
        • 2019-03-08
        • 1970-01-01
        • 2018-06-05
        • 1970-01-01
        • 1970-01-01
        • 2019-01-03
        • 2017-02-24
        相关资源
        最近更新 更多