将Java Application部署为Servlet

时间:2010-02-17 19:06:47

标签: java tomcat servlets

我有一个java应用程序,到目前为止,它作为一个独立的Java应用程序(即可执行jar)运行。我现在需要将它作为servlet部署在Tomcat中。它不需要实际处理任何HTTP请求,但需要使用tomcat启动它。

转换项目以便可以在Tomcat中部署所需的步骤是什么?我正在使用maven作为构建工具和Java 1.5。

2 个答案:

答案 0 :(得分:6)

我知道你想在服务器启动时运行这个应用程序。最好的方法是实施ServletContextListener并在contextInitialized()方法中运行应用。 E.g。

public class Config implements ServletContextListener {

    private YourApp yourApp;

    public void contextInitialized(ServletContextEvent event) {
        yourApp = new YourApp();
        yourApp.start();
    }

    public void contextDestroyed(ServletContextEvent event) {
        yourApp.shutdown();
    }

}

web.xml注册,如下所示:

<listener>
    <listener-class>com.example.Config</listener-class>
</listener>

就是这样。无需将其包装在HttpServlet的风格中,因为您不会在其上发出HTTP请求。

但是,您需要确保它在自己的线程中运行,否则会阻止启动。如果没有,则将其包装在Runnable中并使用ExecutorService执行。

答案 1 :(得分:2)

我假设您的应用程序正在持续运行,并且您已经拥有了应用程序/ Web服务器(例如Tomcat / Jetty),这样可以让您的生活轻松部署到其中。鉴于此,您需要:

  1. 扩展AbstractHttpServlet类,特别是init()方法。这将启动您的应用。
  2. 构建引用此项的web.xml并将load-on-startup属性设置为1(或至少为非零)
  3. 从中构建.war并部署它
  4. 步骤2确保在部署/服务器重新启动时调用init()方法,因此您不必响应HTTP请求(servlet的正常启动触发器)。

    使用javaservicewrapper之类的东西可能更简单,更合适,并将其包装成Windows服务或类似服务。

相关问题