注意:这不是交叉发帖,问不同的问题(相关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。有小费吗?谢谢
更新: 感谢所有好的建议。 如果第二个 webapps(上面的代码片段所在的位置)部署在服务器的 ROOT(我的结构中必须的,不能更改),就会发生问题。任何更多的提示。谢谢。
最佳答案
我猜这是一个时间问题。也许当 ServletContext A 被初始化,并试图获取 ServletContext B 时,ServletContext B 还没有被初始化/部署。
为了证明这一点,在 servlet doGet 中尝试另一个测试,并在您确定两个 webapps 都正确部署时调用它
关于java webapp,getContext总是返回同一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15674725/