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

时间:2009-06-24 15:59:58

标签: tomcat

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

2 个答案:

答案 0 :(得分: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");

希望它对某人有帮助。

答案 1 :(得分:1)

从任何一个Web应用程序中,都是不可能的。

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