Получить список контекстов на сервере Tomcat - PullRequest
2 голосов
/ 24 июня 2009

У меня есть несколько мини-войн, которые являются модулями более крупного приложения, работающего на сервере Tomcat 6.0. Я делаю это таким образом, вместо того, чтобы поместить все модули в одну войну, потому что для разных установок нужны разные модули. Я начинаю выходить на контрольно-пропускной пункт, в котором мне нужно знать, какие другие мини-войны установлены на сервере. Есть ли способ получить список всех установленных войн / контекстов на сервере Tomcat 6.0?

Ответы [ 2 ]

3 голосов
/ 02 августа 2009

Мне удалось обойти эту проблему, так как создаваемые мною «мини-войны» могут совместно использовать lib на уровне загрузчика общих классов в tomcat. Хитрость заключается в том, чтобы использовать 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");

Надеюсь, это кому-нибудь поможет.

1 голос
/ 24 июня 2009

Из любого веб-приложения это невозможно.

Вы можете использовать консоль управления tomcat, к которой, если она установлена, вы можете обратиться по адресу / manager / html на сервере. Это перечислит все установленные приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...