0

Weblogic 開発環境 (Oracle Workshop for WebLogic 10.3) での操作方法のヘルプが必要です。

ある .jar にセッション Bean があり、別の .jar のメッセージ駆動型 Bean からそれを使用する必要があります。セッション Bean を検索するときに「java:comp/env/...」表記を使用したい。

jndiCtx = new InitialContext();
workerHome = (WorkerSBLocalHome) jndiCtx.lookup("java:comp/env/ejb/WorkerSBLocalHome");
WorkerSBLocal worker = workerHome.create();

したがって、MDB コンポーネントのデプロイメント記述子 (ejb-jar.xml) に ejb 参照を作成する必要があります。

<ejb-local-ref>
    <ejb-ref-name>ejb/WorkerSBLocalHome</ejb-ref-name>
    <ejb-ref-type>Session</ejb-ref-type>
    <local-home>test.WorkerSBLocalHome</local-home>
    <local>test.WorkerSBLocal</local>
    <ejb-link>WorkerEJB.jar#WorkerSB</ejb-link>
</ejb-local-ref>

これは機能します(テスト済み)。問題は、MDB デプロイメント記述子が生成され、MDB ソースを編集するたびに、Oracle Workshop がクラス アノテーションを使用してデプロイメント記述子を再生成し、追加内容を上書きすることです。

私の質問は次のとおりです。Oracle Workshop for WL を使用する場合、MDB から EJB を参照する最良の方法は何ですか? または、ejb アノテーションを使用する場合に、上記で概説したもの以外に、Bean 参照を作成するための推奨される方法はありますか? または、Bean 参照を別の場所に配置する必要がありますか?

4

1 に答える 1

0

生成されたデプロイメント記述子を手動で編集する方法はないようです (変更を失いたくない場合)。ただし、注釈を使用してコンテンツを指定することはできます。

@EjbLocalRef(name="ejb/WorkerSBLocalHome", type=Constants.RefType.SESSION, 
    home="test.WorkerSBLocalHome", local="test.WorkerSBLocal",
    link="WorkerEJB.jar#WorkerSB")
@MessageDriven(ejbName = "HelloWorldMDB", 
    destinationJndiName="jms.RequestQueue", destinationType = "javax.jms.Queue")
public class Test extends GenericMessageDrivenBean implements
    MessageDrivenBean, MessageListener {
    .....
    jndiCtx = new InitialContext();
    workerHome = (WorkerSBLocalHome) jndiCtx.lookup("java:comp/env/ejb/WorkerSBLocalHome");
    WorkerSBLocal worker = workerHome.create();
    .....
}

このアプローチでも、コードで具体的な jndi 名を指定する必要がありますが、生成されたデプロイメント記述子の内容はデプロイメント時にいつでも変更できます。

于 2012-03-29T11:31:49.393 に答える