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

8
我使用Java、Struts框架和Apache Server以及Tomcat运行了一个Web应用程序。能够从Web上重新启动该应用程序将非常有用。我不想重启Tomcat,只是重启这个Web应用程序,就像Tomcat Manager一样。
您知道如何做吗?如果不知道,是否有任何方法可以模拟这种行为(重新加载config.properties文件,使Hibernate初始化过程等)?
非常感谢您。

你可能会发现这个链接很有用。 - Paul Sonier
3个回答

5
我快速查看了Tomcat Manager的源代码。它看起来有一个名为“Container Servlet”的类是Tomcat源代码的一部分。从javadoc中可以看到:
ContainerServlet是一个servlet,它可以访问Catalina内部功能,并从Catalina类加载器而不是Web应用程序类加载器加载。”
ContainerServlet会自动传递一个包装器,可用于获取上下文和部署器 - 部署器具有有用的方法,例如start(String contextPath)stop(String contextPath),这将实现您想要的内容。
因此,我认为您需要编写一个继承自ContainerServlet的自己的servlet,并配置Tomcat使用Catalina类加载器加载您的servlet(查看Manager如何配置)。请注意,在托管环境中,这可能不是您的选项。
然后,您的servlet可以具有一个按钮,您可以按下该按钮以重新加载应用程序。我建议在其前面加上某种密码保护。 :)

3

只需点击URL链接即可。

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

停止和

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

首先,模拟使用管理应用程序需要启动。


自从Tomcat 7以后,您必须使用manager/text而不是manager - jansohn

1

Tomcat 管理器提供了一个 HTTP 接口,用于启动/停止应用程序和其他任务。还有 Ant 任务,您可以使用它们轻松访问这些操作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接