1

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

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

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

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

谁能为此提供解决方案?

4

2 回答 2

1

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

Hibernate 允许您使用该hibernate.session_factory_name属性(可能是一个很好的起点。应该已经从 JNDI 查找数据源。

有一件事,我不会将会话工厂或数据源归类为昂贵的,因此您很可能会节省少量内存以换取大量额外的复杂性,所以我会问自己这个问题是否值得额外的维护难题。

于 2012-09-11T10:34:25.503 回答
1

Spring 提供了一种公开任何 bean(服务)的方法,并且可以从任何其他 Web 应用程序或任何独立应用程序访问这些 bean。

请参阅使用 Spring 的远程处理和 Web 服务以获取更多详细信息。

于 2013-03-02T13:49:08.063 回答