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

8 java tomcat java-ee

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

你知道我怎么办吗?如果没有,任何方式来模拟该行为(重新加载config.properties,使Hibernate初始化进程等)?

非常感谢.

Jac*_*son 5

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

ContainerServlet是有权访问卡塔利娜内部功能的服务程序,并从卡塔利娜类加载器,而不是该web应用程序的类加载器加载.

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

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

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