我使用Java、Struts制作了一个web应用程序,并在Apache Server和Tomcat上运行。能够从web重新启动应用程序将是非常有用的。我不想重启Tomcat,只想重启这个webapp,就像Tomcat Manager一样。
你知道我该怎么做吗?如果不是,有什么方法可以模拟这种行为(重新加载config.properties,使Hibernate初始化进程,等等)?
非常感谢。
发布于 2009-06-12 17:50:18
我快速浏览了一下Tomcat Manager的源代码。看起来Tomcat源代码中有一个叫做"Container Servlet“的类。在javadoc中:
servlet ContainerServlet是可以访问
内部功能的servlet,它是从Catalina类加载器而不是web应用程序类加载器加载的。
ContainerServlet会自动传递一个包装器,该包装器可用于获取上下文和Deployer -- Deployer有一些有用的方法,如start(String contextPath)和stop(String contextPath),它们将执行您想要的操作。
因此,我认为您需要做的是编写自己的servlet,该servlet继承自ContainerServlet,并将Tomcat配置为使用Catalina类加载器加载您的servlet(查看管理器是如何配置的)。请注意,在托管环境中,这可能不是一个选项。
然后,您的servlet可能会有一个按钮,您可以按下它来重新加载应用程序。我建议将某种密码保护放在前面。:)
发布于 2009-06-13 17:36:30
只要点击URL
http://<username>:<password>@<hostname>:<port>/manager/stop?path=/<context path> 停下来,
http://<username>:<password>@<hostname>:<port>/manager/start?path=/<context path> 一开始。它使用管理器应用程序模拟您。
发布于 2009-06-12 19:15:03
Tomcat Manager提供了一个http接口来启动/停止应用程序和其他任务。您可以使用Ant tasks轻松访问这些操作。
https://stackoverflow.com/questions/987583
复制相似问题