【问题标题】:how to get WebApplicationContext outside current servlet context?如何在当前 servlet 上下文之外获取 WebApplicationContext?
【发布时间】:2012-01-26 13:46:37
【问题描述】:

在 Tomcat(或其他服务器)中部署了两个 WAR,foo1.war 和 foo2.war。 所有的 spring bean 都在 foo1.war 中定义,但是是否可以在 foo2.war 中部署的 servlet 中获取这些 spring bean? 我不能只使用WebApplicationContextUtils 来获取WebApplicationContext,对吗?他们是不同的WAR。

谢谢

【问题讨论】:

标签: java spring servlets


【解决方案1】:

从技术上讲,如果您公开 servlet 上下文并调用 servletContext.getContext("/otherapp").getAttribute(..),您可以获取另一个应用程序的 WebApplicationContext,但这很难看。

如果您只需将公共定义移动到 common.xml 并将其包含在两个项目中,您就可以拥有相同 bean 定义的实例。

如果您需要在两个应用程序之间传递一些数据,请使用另一种机制:Web 服务(soap、rest)、消息传递 (jmx)。

【讨论】:

    【解决方案2】:

    添加到@Bozho 答案:当两个 WAR 部署在单个 EAR 中时,您还可以共享实例数据(例如单例)。您应该能够将 appContexts 公开为 EAR 提供的类中的静态可见字段,因此对两个 WAR 都是可见的。

    【讨论】:

      猜你喜欢
      • 2020-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-13
      • 2014-09-05
      • 1970-01-01
      • 2017-01-28
      相关资源
      最近更新 更多