首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Java应用程序部署为Servlet

将Java应用程序部署为Servlet
EN

Stack Overflow用户
提问于 2010-02-18 03:06:47
回答 2查看 2.2K关注 0票数 3

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

转换项目以使其可以在Tomcat中部署需要哪些步骤?我使用maven作为构建工具,使用Java1.5。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-02-18 04:55:05

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

代码语言:javascript
复制
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中注册,如下所示:

代码语言:javascript
复制
<listener>
    <listener-class>com.example.Config</listener-class>
</listener>

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

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

票数 6
EN

Stack Overflow用户

发布于 2010-02-18 03:20:24

我假设你的应用程序一直在运行,并且你已经有了一个应用程序/web服务器(例如Tomcat/Jetty),这样你的生活就可以很容易地部署到其中。鉴于此,您需要:

  1. 扩展了AbstractHttpServlet类,特别是init()方法。这将启动您的应用程序。
  2. 构建一个引用此应用程序的web.xml,并将启动时加载属性设置为1(或者至少从中创建一个.war并将其部署到

步骤2确保在部署/服务器重新引导时调用init()方法,因此您不必响应HTTP请求(servlet的正常启动触发器)。

使用像javaservicewrapper这样的东西,并将其包装为Windows服务或类似服务,可能会更简单、更合适。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2283600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档