我有一个java应用程序,到目前为止,它作为一个独立的Java应用程序(即可执行jar)运行。我现在需要将它作为servlet部署在Tomcat中。它不需要实际处理任何HTTP请求,但需要使用tomcat启动它。
转换项目以便可以在Tomcat中部署所需的步骤是什么?我正在使用maven作为构建工具和Java 1.5。
答案 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),这样可以让您的生活轻松部署到其中。鉴于此,您需要:
AbstractHttpServlet
类,特别是init()方法。这将启动您的应用。web.xml
并将load-on-startup属性设置为1(或至少为非零)步骤2确保在部署/服务器重新启动时调用init()
方法,因此您不必响应HTTP请求(servlet的正常启动触发器)。
使用javaservicewrapper之类的东西可能更简单,更合适,并将其包装成Windows服务或类似服务。