2012-09-11 91 views
1

我想跨多个战争共享一个单身bean。我知道使用parentContextKey属性共享ApplicaitonContext(例如,http://blog.springsource.org/2007/06/11/using-a-shared-parent-application-context-in-a-multi-war-spring-application/如何在SPRING的战争中共享bean INSTANCE?

但是这种方法创建了多个bean的实例(对于2个战争,2个实例)。我只想在两场战争中的一个实例。

另一种方式,如果我在任何POJO中设置了一些值,它应该可以在另一场战争中访问。

我需要的原因是,有一些bean(如HibernateSessionFactory,Datasource等是昂贵的),这是创建多次(n战争n实例)。而我想利用相同的实例,而不是在不同的战争中创建相同的实例。

任何人都可以为我提供解决方案吗?

回答

0

你可以结合战争。但我认为这可能会导致一些其他问题。 检查this结合战争后。

+0

不,我不能结合战争。可以有N次战争(Portlet战争) – Rohan

1

您可以通过将对象绑定到全局JNDI树来实现此目的。这意味着两个WAR都会引用在JNDI中查找的对象。

休眠允许您使用hibernate.session_factory_name属性(this也不失为一个很好的起点。数据来源应该已经从JNDI查找。

有一件事,我不会一流的会话工厂或数据源作为昂贵的,所以你可能会节省少量的内存以换取很多额外的复杂性,所以我会问自己这个问题是否值得额外的维护令人头痛。

+0

+1尤其是对于最后一节 –

+0

您提出的方法很好,但这种方式我最终会依赖查找而不是依赖注入。 – Rohan

1

Spring提供了一种暴露方式任何bean(服务)和这些bean都可以从任何其他Web应用程序或任何独立应用程序访问。

请参阅Remoting and Web Service using Spring以了解更多详情。