【问题标题】:java webapp, getContext always return the same objectjava webapp,getContext总是返回同一个对象
【发布时间】:2013-03-18 11:18:25
【问题描述】:

注意:这不是交叉发帖,问不同的问题(相关ClassCastError when share objects between webapp

我有两个 webapps 在同一个 tomcat 实例上的两个不同上下文中运行,当第二个应用程序尝试获取第一个应用程序上下文时,无论我输入的名称是什么,对象都是相同的上下文,这是错误的。

public void contextInitialized(ServletContextEvent sce) {
       ServletContext context= sce.getServletContext().getContext("/bling");
       ServletContext context2= sce.getServletContext().getContext("/bla");

对象 context 和 context2 都有这个对象 id org.apache.catalina.core.ApplicationContextFacade@4376。

我正在使用tomcat7。有小费吗? tks

更新: 感谢所有好的建议。 如果第二个 webapps(上面的 sn-p 所在的位置)部署在服务器的 ROOT(我的结构中必须,不能更改),就会出现问题。还有什么提示。谢了。

【问题讨论】:

  • @LuiggiMendoza 你可能错了,手册上说:The given path must be begin with "/", is interpreted relative to the server's document root and is matched against the context roots of other web applications hosted on this container.
  • @panky1986 您的链接与问题完全无关。

标签: java tomcat web-applications


【解决方案1】:

我猜这是时间问题。也许当 ServletContext A 被初始化,并试图获取 ServletContext B 时,ServletContext B 还没有被初始化/部署。

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

【讨论】:

  • 我认为 ServletContext 是在部署应用程序时创建的,而在 Tomcat 中这会在启动服务器时发生。
  • 但是 OP 的代码似乎是在上下文初始化事件上运行的,也许现在这样做还为时过早
  • 您好,谢谢您的回答。我已经更新了我的问题,如果您能提供更多答案,不胜感激。
  • 有这方面的消息吗?我认为@gerrytan 是正确的,他怀疑这确实是一个时间问题。你能确认(然后接受他的回答)出租车吗?
猜你喜欢
  • 2018-04-26
  • 2019-03-19
  • 2014-05-27
  • 2014-10-02
  • 1970-01-01
  • 1970-01-01
  • 2019-05-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多