4

私は現在、IBM Websphere Application Server 7 (Java EE 5) 上で動作する小さな EJB アプリケーションを開発しています。アプリは主に、変換されて DB に格納される受信 MQ メッセージをリッスンする 1 つの MDB で構成されます。現在、構成、マッピング、データソース ルックアップなどを共有するために、多くのシングルトン/ファクトリを使用しています。解決策は、guice/spring のような (単純な) DI フレームワークを使用して、さまざまなインスタンスを注入することです。問題は、初期化/セットアップ コードをどこに配置するかということです。アプリケーションのメイン エントリ ポイントはどこですか。インスタンスを MDB に挿入するにはどうすればよいですか?

4

2 に答える 2

2

Guice の使用を控え、Java EE 5 ですでに利用可能なインジェクション メカニズムを使用することを検討する価値があるかもしれません。

適切な「開始点」を見つけることに関して、残念ながら、EJB 仕様では、開始時に Bean を実行する方法が定義されていません。ただし、EE 仕様の Web プロファイルには 1 つがあります。アプリケーションに WAR を追加し、サーブレット リスナー コンポーネントを設定できます。

http://java.sun.com/javaee/5/docs/api/javax/servlet/ServletContextListener.html

これは、アプリケーションがコンテナー (WebSphere) によってロードおよび開始されるたびに開始するように設定できます。ただし、クラスローダーの問題に注意してください。

于 2011-09-06T08:44:11.803 に答える
1

Spring を使用すると、EJB3 インターセプター経由で実行できます。http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/ejb.html#ejb-implementation-ejb3 を参照してください

警告に関する有用な情報は javadoc にあります。必ずお読みください: http://static.springsource.org/spring/docs/3.0.x/api/org/springframework/ejb/interceptor/SpringBeanAutowiringInterceptor.html

于 2011-07-13T22:54:17.540 に答える