2009-08-17 4 views
3

Javaアプリケーションサーバーにメッセージ駆動型Bean(MDB)があるとします。 MDBはJMSキューからメッセージを受信し、それをメッセージプロセッサに渡します。私の場合、メッセージプロセッサは非常に重いオブジェクトであり、広範囲の初期化を必要とするため、新しいメッセージを作成して各メッセージを処理する必要はありません。代わりに、私はメッセージ・プロセッサのプールを事前に作成し、それらを使ってメッセージを処理したいと考えています。Javaアプリケーションサーバーでカスタムオブジェクトプールを作成する方法

私の質問は次のとおりです。J2EEアプリケーションサーバーでこのプールを構築するための正しい方法は何ですか?任意のサーバーにカスタム(非接続)オブジェクトプールを定義するための組み込みサポートがありますか?私は、プールをシングルトンに詰め込み、ベストを願う前に、このパターンのためのビルトインサポートを活用したいと思います。特に:

  • プールの定義/インスタンス化はどのようにして行いますか?
  • プールにアクセスするにはどうすればよいですか? JNDI?
  • アプリケーションサーバーはどのような管理機能を備えていますか?

私は一般的にオブジェクトプールを実装する方法を知っています。私の質問は、主にJ2EEアプリケーションサーバーにプールを作成することです。

のJBossまたは何か他のものはこれが容易になります場合、私はGlassfishのを使用して計画していますが、私は "メートル柔軟な。

ありがとう!

答えて

1

あなたがApache Commons Poolを試みることができる、それはアプリケーションオブジェクトをプールするための一般的なメカニズムです。

0

のJava 5がこれを行うことができますExecutor APIが付属しています。

+0

これは私の問題をどのように解決するのか、特にJ2EEアプリケーションサーバーのコンテキストではわかりません。 –

+0

アプリケーションサーバーのアプリケーションの起動/停止をエグゼキュータと同期するだけで動作するはずです。 –

4

たEJB自体は通常、ほとんどのアプリケーションサーバによってプールのオブジェクトとして管理されている。

アプリケーションを実装する最も明白な方法は、MDB自体をメッセージプロセッサとして使用し、実際に使用しているサーバーに固有のアプリケーションサーバーの展開構成を使用してプーリングを構成することです。

+0

私はこれを試してみます。どれだけのコントロールが得られるのだろうか?たとえば、非アクティブな期間がある場合、ASはMDBのプールを空にして、次にメッセージが入ったときに別の長い初期化プロセスを必要としますか? –

+0

これは本当にAS固有です。私の主な経験はJBossとWeblogicです。これは不動態化と廃棄ポリシー、プールのサイズと動作をカスタマイズすることを可能にします。私はGlassFishと違いはないと思っています。ここで関連するドキュメントを見つけることができます:http://docs.sun.com/app/docs/doc/820-7695/beaiu?a=view –

関連する問題