我想在我的web应用程序中运行一些代码,以使应用程序停止。例如,如果数据库服务器不可用。
我希望实现类似于App.exit()
的{{1}}之类的内容。
FYI
答案在" Shutdown tomcat using web application deployed in it"是关闭整个集装箱。这里的问题是关闭(或临时禁用)单个Web应用程序。
答案 0 :(得分:4)
您可以使用MBeans / JMX关闭Tomcat中的单个应用程序:
public void shutdownApp() {
try {
String serviceName = "Catalina"; // @see server.xml
String hostName = "localhost"; // @see server.xml
String contextName = "MyApplicationName"; // the name of your application in the URL
Hashtable<String, String> keys = new Hashtable<>();
keys.put("j2eeType", "WebModule");
keys.put("name", "//" + hostName + "/" + contextName);
keys.put("J2EEApplication", "none");
keys.put("J2EEServer", "none");
MBeanServerConnection mbeanServer = ManagementFactory.getPlatformMBeanServer();
ObjectName appObject = ObjectName.getInstance(serviceName, keys);
System.out.println("Found objectName: " + appObject);
mbeanServer.invoke(appObject, "stop", null, null);
} catch (Exception e) {
e.printStackTrace();
}
}
需要根据您的配置更改serviceName,hostName和contextName vars。此示例将关闭部署如下的应用程序:
hxxp://localhost:8080/MyApplicationName
除了“停止”,你也可以打电话:“开始”或“重新加载”。
答案 1 :(得分:1)
通常我们不会在Web应用程序中调用App.exit或System.exit。如果数据库服务器不可用,只有类似问题的原因或类型,您可以执行以下操作
同样使用tomcat管理器,您可以在tomcat容器中启动/停止/部署任何Web应用程序。