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