从自己开始/停止Web应用程序?

时间:2009-06-12 16:16:58

标签: java tomcat java-ee

我使用Java,Struts创建了一个Web应用程序,并在Apache Server和Tomcat上运行。能够从Web重新启动应用程序非常有用。我不想重启Tomcat,只需要重启这个webapp,就像Tomcat Manager一样。

你知道我该怎么办?如果没有,任何模拟该行为的方法(重新加载config.properties,制作Hibernate init进程等)?

非常感谢你。

3 个答案:

答案 0 :(得分:5)

我快速浏览了Tomcat Manager的源代码。看起来有一个类是Tomcat源的一部分,名为“Container Servlet”。来自javadocs:

  

ContainerServlet 是一个servlet   可以访问Catalina内部   功能,并从中加载   Catalina类装载机代替了   Web应用程序类加载器。

ContainerServlet自动传递一个可用于获取Context和Deployer的包装器 - 而Deployer有一些有用的方法,例如start(String contextPath)stop(String contextPath),它们可以做你想要的。

所以,我认为您需要做的是编写自己的继承自ContainerServlet的servlet,并使用Catalina类加载器配置Tomcat以加载您的servlet(查看Manager如何配置以了解如何)。请注意,这可能不适合您在托管环境中使用。

然后你的servlet可以有一个你按下的按钮来重新加载应用程序。我建议在其前面加上某种密码保护。 :)

答案 1 :(得分:3)

点击网址

http://<username>:<password>@<hostname>:<port>/manager/stop?path=/<context path> 

停止并

http://<username>:<password>@<hostname>:<port>/manager/start?path=/<context path> 

开始。这模拟了你使用管理器应用程序。

答案 2 :(得分:1)

Tomcat Manager提供了一个http接口来启动/停止应用程序和其他任务。您可以使用Ant tasks轻松访问这些操作。