tomcat - 如何关闭 Tomcat 中的单个应用程序?

标签 tomcat

我想在我的网络应用程序中运行一些代码,使应用程序停止。例如,如果数据库服务器不可用。 我想实现类似 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/

相关文章:

java - Spring Boot 属性文件外部化

java - 尽管请求中有 CSRF token ,SPRING CSRF 仍抛出 405

spring-boot - tomcat 中的 Spring boot WAR - 外部化 application.properties

tomcat - 使用 UrlRewriteFilter 无法正确重定向

maven - 如何自动化 TC Server war 部署

ruby - 有没有办法使用 rspec-serverspec 测试部署期间是否安装了特定版本的 java 或 tomcat?

tomcat - 将 webapp 配置为在 tomcat7 上的 ssl 证书上运行

java - 为什么 Tomcat 在 catalina.out 日志文件中将我的日志行加倍?

java - eclipse rap下载服务servlet报错

java - Tomcat ClassNotFoundException : org. slf4j.spi.LoggerFactoryBinder 但 slf4j 在库中