2009-06-24 13 views
2

Tomcat 6.0サーバーで実行されているより大きなアプリケーションのモジュールであるいくつかのミニ戦争があります。私は、異なるインストールが異なるモジュールを必要とするため、すべてのモジュールを1つの戦争に入れるのではなく、このようにしています。私は、他のミニ戦争がサーバにインストールされているかどうかを知る必要があるロードブロッキングに着手し始めています。 Tomcat 6.0サーバーにインストールされているすべての戦争/コンテキストのリストを取得する方法はありますか?Tomcatサーバーのコンテキスト一覧を取得

答えて

3

私が作成する「ミニ戦争」は、tomcatの共通クラスローダレベルでlibを共有できるため、この問題の回避策を得ることができました。

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として登録作成された場合:トリックは、以下のない(共通クラスローダーにある)ApplicationListenerを使用することであろう。この静的マップは、Context変数myappsを介してすべてのコンテキスト間で共有されます。他の文脈にアクセスする必要があるときはいつでも、私は以下を行うことができます:

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

誰かに役立つことを願っています。

+0

context.setAttribute( "myapps"、contexts);そうではありません。 ? – raspacorp

+0

このコードをcatalina.jar内のApplicationListenerクラスに追加しましたか?あなたはそのコードをどこに置いていますか? – raspacorp

1

ウェブアプリケーションのいずれかから、それは不可能です。

インストールされている場合、サーバーの/ manager/htmlにアクセスできるtomcat管理コンソールを使用できます。これにより、インストールされているすべてのアプリケーションが一覧表示されます。

関連する問題