如何在Tomcat中关闭单个应用程序?

我想在Web应用程序中运行一些代码,以使应用程序停止。例如,如果数据库服务器不可用。我想实现App.exit()类似的东西System.exit()


“ 使用已部署的Web应用程序关闭Tomcat”中的答案是关闭整个容器。这里的问题是关于关闭(或临时禁用)单个Web应用程序。

回答:

您可以使用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变量。此示例将关闭这样部署的应用程序:

hxxp://localhost:8080/MyApplicationName

除了“停止”,您也可以称为:“开始”或“重新加载”。

以上是 如何在Tomcat中关闭单个应用程序? 的全部内容, 来源链接: utcz.com/qa/433581.html

回到顶部