如何在当前的servlet上下文之外获取WebApplicationContext?

时间:2012-01-26 13:46:38

标签: java spring servlets

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

谢谢

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

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