在Tomcat(或其他服務器)中部署了兩個WAR,foo1.war和foo2.war。 所有spring bean都在foo1.war中定義,但是可以在foo2.war中部署的servlet中獲得這些spring bean嗎? 我不能只用WebApplicationContextUtils
來得到WebApplicationContext
,對不對?他們是不同的戰爭。如何在當前的servlet上下文之外獲得WebApplicationContext?
感謝
在Tomcat(或其他服務器)中部署了兩個WAR,foo1.war和foo2.war。 所有spring bean都在foo1.war中定義,但是可以在foo2.war中部署的servlet中獲得這些spring bean嗎? 我不能只用WebApplicationContextUtils
來得到WebApplicationContext
,對不對?他們是不同的戰爭。如何在當前的servlet上下文之外獲得WebApplicationContext?
感謝
從技術上講,你可以得到的其他應用程序的WebApplicationContext
,如果你暴露servlet上下文,並調用servletContext.getContext("/otherapp").getAttribute(..)
,但是這是醜陋的。
如果只是將通用定義移動到common.xml
並將其包含在兩個項目中,則可以擁有相同bean定義的實例。
如果您需要在兩個應用程序之間傳遞某些數據,請使用其他機制:Web服務(soap,rest),消息傳遞(jmx)。
添加到@Bozho答案:當兩個WAR部署在單個EAR中時,您還可以共享實例數據(例如單身人士)。您應該能夠將appContexts作爲由EAR提供的類中的靜態可見字段公開,因此對兩個WAR都是可見的。
也許http://stackoverflow.com/questions/6807818/share-java-classes-between-war-files-in-tomcat可以幫助你。 – 2012-01-26 13:48:07
@Tichodroma:http://stackoverflow.com/questions/6807818/share-java-classes-between-war-files-in-tomcat是關於共享類和實例,但不是Spring上下文。 – Ralph