Java 从自身启动/停止web应用程序?
我已经使用Java、Struts和Apache服务器以及Tomcat开发了一个web应用程序。能够从web重新启动应用程序将非常有用。我不想重启Tomcat,只想重启这个webapp,就像Tomcat Manager那样 你知道我怎么做吗?如果没有,有什么方法可以模拟这种行为(重新加载config.properties,使Hibernate初始化进程,等等)Java 从自身启动/停止web应用程序?,java,tomcat,jakarta-ee,Java,Tomcat,Jakarta Ee,我已经使用Java、Struts和Apache服务器以及Tomcat开发了一个web应用程序。能够从web重新启动应用程序将非常有用。我不想重启Tomcat,只想重启这个webapp,就像Tomcat Manager那样 你知道我怎么做吗?如果没有,有什么方法可以模拟这种行为(重新加载config.properties,使Hibernate初始化进程,等等) 非常感谢。我快速查看了Tomcat管理器的源代码。看起来有一个类是Tomcat源代码的一部分,称为“容器Servlet”。从javadoc
非常感谢。我快速查看了Tomcat管理器的源代码。看起来有一个类是Tomcat源代码的一部分,称为“容器Servlet”。从javadocs: ContainerServlet是一个servlet 可以进入卡塔琳娜内部医院 功能,并从 Catalina类装入器而不是 web应用程序类加载器 ContainerServlet会自动传递一个可用于获取上下文和部署器的包装器,部署器有一些有用的方法,例如
start(String-contextPath)
和stop(String-contextPath)
,这些方法可以满足您的需要
因此,我认为您需要做的是编写您自己的servlet,该servlet继承自ContainerServlet,并配置Tomcat以使用Catalina类加载器加载您的servlet(查看管理器是如何配置的)。请注意,这可能不是托管环境中的选项
然后,您的servlet可以有一个按钮,您可以按下该按钮来重新加载应用程序。我建议在此之前设置某种密码保护。:) Tomcat Manager提供了一个http接口来启动/停止应用程序和其他任务。您可以使用以下工具轻松访问这些操作 只需点击URL即可
http://<username>:<password>@<hostname>:<port>/manager/stop?path=/<context path>
http://:@:/manager/stop?path=/
停下来
http://<username>:<password>@<hostname>:<port>/manager/start?path=/<context path>
http://:@:/manager/start?path=/
开始。它模拟您使用manager应用程序。您可能会发现链接很有用。由于Tomcat 7,您必须使用
manager/text
而不是manager
。