【问题标题】:How to access the one Web application Context in another Web application Context如何在另一个 Web 应用程序上下文中访问一个 Web 应用程序上下文
【发布时间】:2012-02-08 16:18:09
【问题描述】:

我在 Tomcat6 服务器中部署了两个 WAR,例如分别在 Context-AContext-B 中的 WAR-AWAR-B

我在Context-A 中存储了一些数据,我想在Context-B 中读取这些数据。

我已经通过网络找到了一些方法来实现它。我通过 cookie 使 Context-A 的会话 ID 可用于所有上下文。我也在server.xml 中设置了crossContext = true

但是当我在Context-B 中执行serveltContext.getContext("Context-A"); 时,它会返回null

【问题讨论】:

    标签: servlets spring-mvc tomcat6


    【解决方案1】:

    “上下文-A”不正确。传递给getContext 的参数是“uripath”。所以如果你有 WAR-A (/war-a) 和 WAR-B (/war-b) 来自 WAR-B 的调用应该是

    servletContext.getContext("/war-a");
    

    注意:我为 getContext 发布的链接来自 Java EE 1.3 API,但它不应更改。

    【讨论】:

    • 谢谢戴夫,我按照你的建议做了,但还是一样,没用。我是否缺少任何配置
    • Murugesh - 我现在正在用一个简单的应用程序检查这个问题......希望在接下来的 30 分钟内给你一个答案。
    • @Murugesh 当你说你在 server.xml 中设置了“crossContext”时,你是在哪个应用程序上设置的?它必须在请求跨上下文访问的应用程序上设置。因此,在您的情况下,您需要在 Context-B 的上下文上设置 crossContext。我刚刚发现了这个实证测试。
    • 我没有在应用程序特定级别设置它,我添加了这样。我认为它适用于在服务器上运行的所有 Web 应用程序!如果我错了,请纠正我。注意:我'已经添加了默认情况下只有上下文条目其余可用。
    • @Murugesh 我认为你做不到。 “上下文”表示部署在主机上的单个 Web 应用程序。通过像你一样声明一个上下文,这不会为所有 webapps 设置 crossContext="true"。您可以做的是为 Context-B 应用程序创建一个 META-INF/context.xml(将 META-INF 目录与 WEB-INF 放在同一级别)并在那里声明上下文信息。我不知道具体会如何表现,但你可能会更幸运。
    猜你喜欢
    • 2015-04-14
    • 2018-08-14
    • 2011-07-26
    • 1970-01-01
    • 2019-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-13
    相关资源
    最近更新 更多