簡體   English   中英

如何在Tomcat中關閉單個應用程序?

[英]How to shutdown a single application in Tomcat?

我想在我的web應用程序中運行一些代碼,以使應用程序停止。 例如,如果數據庫服務器不可用。 我想實現類似於System.exit()類似App.exit()東西。

FYI

使用部署在其中的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

除了“停止”,你也可以打電話:“開始”或“重新加載”。

通常我們不會在Web應用程序中調用App.exit或System.exit。 如果數據庫服務器不可用,只有類似問題的原因或種類,您可以執行以下操作

  1. 編寫一個ContextListner來實現ServletContextListener
  2. 在contextInitialized方法上檢查必要的應用程序初始化配置,如設置數據庫連接,默認配置等,
  3. 包含上下文初始化中的任何錯誤,讓您的servlet和jsp頁面通知應用程序尚未就緒並重定向到錯誤頁面。

同樣使用tomcat管理器,您可以在tomcat容器中啟動/停止/部署任何Web應用程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM