我想在我的网络应用程序中运行一些代码,使应用程序停止。例如,如果数据库服务器不可用。
我想实现类似 App.exit()
的东西,类似于 System.exit()
。
仅供引用
“Shutdown tomcat using web application deployed in it”中的答案是关于关闭整个容器。这里的问题是关于关闭(或临时禁用)单个 Web 应用程序。
最佳答案
您可以使用 MBean/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 变量需要根据您的配置进行更改。此示例将关闭这样部署的应用程序:
hxxp://localhost:8080/MyApplicationName
除了“停止”,您还可以调用:“开始”或“重新加载”。
关于tomcat - 如何关闭 Tomcat 中的单个应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35693333/