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 warの場合はnインスタンス)。異なる戦争で同じインスタンスを作成するのではなく、同じインスタンスを利用したいのに対して。

誰かが私にこれに対する解決策を提供できますか?

4

2 に答える 2

1

これは、オブジェクトをグローバル JNDI ツリーにバインドすることで実現できます。これは、両方の WAR が JNDI でルックアップされたオブジェクトへの参照を持つことを意味します。

Hibernate を使用すると、hibernate.session_factory_nameプロパティを使用できます (これは、出発点として適切かもしれません。データ ソースは、JNDI から既にルックアップされている必要があります。

1 つには、私はセッション ファクトリやデータ ソースを高価なものとして分類しないので、多くの追加の複雑さと引き換えに、ごくわずかな量のメモリを節約できる可能性があります。追加のメンテナンスの頭痛の種。

于 2012-09-11T10:34:25.503 に答える
1

Spring は任意の Bean (サービス) を公開する方法を提供し、これらの Bean は他の Web アプリケーションまたは任意のスタンドアロン アプリケーションからアクセスできます。

詳細については、Spring を使用したリモーティングと Web サービスを参照してください。

于 2013-03-02T13:49:08.063 に答える