2009-06-24 20 views
2

我有幾個迷你戰爭,這些戰爭是運行在Tomcat 6.0服務器上的更大應用程序的模塊。我這樣做,而不是把所有模塊放在一場戰爭中,因爲不同的安裝需要不同的模塊。我開始遇到一個障礙,我需要知道在服務器上安裝了哪些迷你戰爭。有沒有辦法在Tomcat 6.0服務器上獲取所有安裝的戰爭/上下文列表?獲取tomcat服務器上下文的列表

回答

3

我已經設法解決這個問題,因爲我將創建的「迷你戰爭」可以在tomcat的普通類加載器級別共享一個lib。訣竅是使用一個ApplicationListener(位於公共類裝載器),其執行以下操作:

public class ApplicationListener implements ServletContextListener { 

    private static Map<String, ServletContext> contexts = 
    new HashMap<String,ServletContext>(); 

    public void contextInitialized(ServletContextEvent event) { 
    ServletContext context = event.getServletContext(); 
    if (context.getContextPath().length() > 0) 
     contexts.put(context.getContextPath(), context); 
    context.setAttribute("myapps", applications); 
    } 

} 

Context創建它註冊爲在靜態地圖一個ServletContext。然後通過Context變量myapps在所有上下文之間共享此靜態映射。每當我需要訪問其他上下文時,我可以執行以下操作:

ServletContext namedcontext = 
    ((ServletContext) ServletContext.getAttribute("myapps")).get("/namedapp"); 

希望它有助於某人。

+0

是不是context.setAttribute(「myapps」,contexts); ? – raspacorp 2015-05-14 14:51:05

1

從任何一個Web應用程序,這是不可能的。

您可以使用tomcat管理控制檯,如果已安裝,您可以在服務器上的/ manager/html上訪問該控制檯。這將列出所有已安裝的應用程序。

相關問題