私は Jboss 7 を使用しており、両方にシングルトン EJB を含む 2 つの個別のデプロイメントがあります。
1 つの EJB が他の EJB にアクセスしてそのメソッドを呼び出せるようにする必要がありますが、アプリ サーバーが起動して両方をデプロイしようとすると、どちらが最初に起動されるかについて保証されないようです (Dependencies: deployment.xxx.jar
一方を他方に設定します)。
アノテーションを使用できないようです@DependsOn
。これは、個別のデプロイメント間で実行できないと思われる特定の EJB に名前を付けている@EJB(lookup=JNDI_STRING)
ため、唯一のオプションとして残っています。ただし、このインジェクションは、ルックアップが発生したときに依存している EJB が実際に開始され、NPE が発生することを保証していないようです。明らかに、これは単にInitialContext
from@PostContruct
メソッドを使用して JNDI を介して 2 番目の EJB をルックアップした場合にも発生します。
したがって、基本的には、同じアプリケーション サーバー上で、あるデプロイメントの 1 つの EJB が別のデプロイメントの別の EJB の前に開始されることを保証する必要があります。たとえば、起動時に実行するセットから依存する EJB を遅延して初期化すれば、おそらくうまくいくと思いますHttpServlet
が、これは理想的ではありません。
おそらく、私が見逃しているこれを行う賢明な方法がありますか?EJB が開始されるまで、EJBをポーリングする必要はありません。