java webapp、getContext始终返回相同的对象

java webapp、getContext始终返回相同的对象,java,tomcat,web-applications,Java,Tomcat,Web Applications,注意:这不是交叉张贴,问不同的问题(相关) 我有两个webapp在同一个tomcat实例上的两个不同上下文中运行,当第二个app尝试获取第一个app上下文时,不管我输入了什么名称,对象都是相同的上下文,这是错误的 public void contextInitialized(ServletContextEvent sce) { ServletContext context= sce.getServletContext().getContext("/bling"); S

注意:这不是交叉张贴,问不同的问题(相关)

我有两个webapp在同一个tomcat实例上的两个不同上下文中运行,当第二个app尝试获取第一个app上下文时,不管我输入了什么名称,对象都是相同的上下文,这是错误的

public void contextInitialized(ServletContextEvent sce) {
       ServletContext context= sce.getServletContext().getContext("/bling");
       ServletContext context2= sce.getServletContext().getContext("/bla");
objectcontext和context2都有这个对象id org.apache.catalina.core。ApplicationContextFacade@4376.

我用的是tomcat7。有什么建议吗?tks

更新: 谢谢所有的好建议。
如果第二个webapps(上面的代码片段所在的位置)部署在服务器的根目录下(在我的结构中是必须的,不能更改),那么问题就会发生。还有什么提示吗。Tks.

我猜这是个时间问题。可能在初始化ServletContext A并尝试获取ServletContext B时,ServletContext B尚未初始化/部署


为了证明这一点,请在servlet doGet中尝试另一个测试,并在确定两个Web应用程序都已正确部署时调用它

查看一下@LuiggiMendoza此处您可能错了,手册上说:
给定的路径必须以“/”开头,相对于服务器的文档根进行解释,并与此容器上承载的其他web应用程序的上下文根进行匹配。
Related:@panky1986您的链接与问题完全无关。我以为ServletContext是在部署应用程序时创建的,在Tomcat中,这是在启动服务器时发生的。但是OP的代码似乎是在上下文初始化事件上运行的,也许现在这样做还为时过早。我已经更新了我的问题,如果你能提供更多的答案,我将不胜感激。有什么消息吗?我认为@gerrytan的怀疑是正确的,他认为这确实是一个时间问题。你能确认一下(然后接受他的回答)吗?