1

mdb を seam コンポーネントとして使用するときに問題が発生します。Bean には、他のシーム成分を注入します。

問題は、サーバーがクラッシュ後に再起動し、mdb が展開されると、メッセージの読み取りを開始しますが、シームがまだ初期化されておらず、例外が発生することです (上記にリストされています)。キューが空の状態でサーバーを起動し、サーバーの起動後にメッセージをキューに送信すると、問題なく動作します。

サーバーの起動時にメッセージの送信を停止または遅延させ、seam が完全に機能している場合にのみメッセージの送信を開始する可能性はありますか?

Bean で @Depends antotatin を試しましたが、成功しませんでした

私の環境: jboss5.1 GA シーム 2.2.0 GA jboss メッセージング 1.4

どんな助けでも大歓迎です

起動時のエラー:

11:24:20,477 ERROR [TxPolicy] javax.ejb.EJBTransactionRolledbackException: java.lang.IllegalStateException: 初期化されたアプリケーションの外部で Seam コンポーネントを呼び出そうとしました

11:24:30,483 ERROR [TxPolicy] javax.ejb.EJBException: プールセマフォの取得に失敗しました, strictTimeout=10000

4

1 に答える 1

1

解決策を見つけてください... @Dependsで間違った名前パターンを試していました

この注釈を追加します。

@Depends( {"jboss.web.deployment:war=/myappname"} )

myappname はアプリの warfile の名前です。これにより、war デプロイメント中に Seam が初期化を完了するまで、MDB の初期化が遅延します。

これが誰かを助けることを願っています

于 2010-06-18T11:04:08.000 に答える