获取tomcat服务器中的上下文列表

获取tomcat服务器中的上下文列表,tomcat,Tomcat,我有几个小型WAR,它们是运行在Tomcat6.0服务器上的大型应用程序的模块。我这样做,而不是把所有的模块放在一场战争中,因为不同的安装需要不同的模块。我开始遇到一个障碍,我需要知道服务器中安装了哪些其他的迷你战争。有没有办法获取Tomcat 6.0服务器中所有已安装WAR/上下文的列表?从任何一个web应用程序获取,这是不可能的 您可以使用tomcat管理控制台,如果安装了该控制台,您可以访问服务器上的/manager/html。这将列出所有已安装的应用程序。我已经设法解决了这个问题,因为我

我有几个小型WAR,它们是运行在Tomcat6.0服务器上的大型应用程序的模块。我这样做,而不是把所有的模块放在一场战争中,因为不同的安装需要不同的模块。我开始遇到一个障碍,我需要知道服务器中安装了哪些其他的迷你战争。有没有办法获取Tomcat 6.0服务器中所有已安装WAR/上下文的列表?

从任何一个web应用程序获取,这是不可能的


您可以使用tomcat管理控制台,如果安装了该控制台,您可以访问服务器上的/manager/html。这将列出所有已安装的应用程序。

我已经设法解决了这个问题,因为我将创建的“迷你战争”可以在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);
  }

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

希望它能帮助别人。

它不是context.setAttribute(“myapps”,context)?您是否将该代码添加到catalina.jar中的ApplicationListener类中?或者你把代码放在哪里。