2012-01-26 77 views
2

在Tomcat(或其他服務器)中部署了兩個WAR,foo1.war和foo2.war。 所有spring bean都在foo1.war中定義,但是可以在foo2.war中部署的servlet中獲得這些spring bean嗎? 我不能只用WebApplicationContextUtils來得到WebApplicationContext,對不對?他們是不同的戰爭。如何在當前的servlet上下文之外獲得WebApplicationContext?

感謝

+0

也許http://stackoverflow.com/questions/6807818/share-java-classes-between-war-files-in-tomcat可以幫助你。 – 2012-01-26 13:48:07

+0

@Tichodroma:http://stackoverflow.com/questions/6807818/share-java-classes-between-war-files-in-tomcat是關於共享類和實例,但不是Spring上下文。 – Ralph

回答

0

從技術上講,你可以得到的其他應用程序的WebApplicationContext,如果你暴露servlet上下文,並調用servletContext.getContext("/otherapp").getAttribute(..),但是這是醜陋的。

如果只是將通用定義移動到common.xml並將其包含在兩個項目中,則可以擁有相同bean定義的實例。

如果您需要在兩個應用程序之間傳遞某些數據,請使用其他機制:Web服務(soap,rest),消息傳遞(jmx)。

0

添加到@Bozho答案:當兩個WAR部署在單個EAR中時,您還可以共享實例數據(例如單身人士)。您應該能夠將appContexts作爲由EAR提供的類中的靜態可見字段公開,因此對兩個WAR都是可見的。

相關問題