0

現在、EJB 2.0 から 3.0 への移行に取り組んでいます。古いセッション Bean は、xdoclets を使用していくつかの設定を行いました。

ほぼ全て理解できますが、一つ気になることがあります。@ejb.ejb-ref以下のコードのような方法で誰かが使用するのはなぜですか。

/**
 * @ejb:bean name="SomeBean"
 *      local-jndi-name="com/my/jndi/SomeBean"
 *      view-type="local" type="Stateless"
 * 
 * @ejb.ejb-ref ejb-name="SomeBean"
 *      view-type="local"
 *
 * ..some more stuff here
 */
public class SomeBean implements SessionBean {
    // class body here
}

@tagsこの xdoclet には、weblogic を構成するためのものを含め、他にもいくつかあります ( ) @weblogic

Bean 自体への参照を追加したい理由はありますか? 2 番目の質問ですが、この構成は ejb3 でも必要ですか?

この@weblogicタグがこの種の参照を使用する必要がある場合があることをどこかで読んだような気がしますが、もう一度見つけることができません。本当ですか?


@編集

そのようなクラスの作成者の 1 人と話した後、Bean メソッドの 1 つが所有するクラスのインスタンスへの参照を使用して 2 番目のメソッド (新しいトランザクションを必要とする可能性がある) を呼び出すときに、そのような自己参照が使用される可能性があることがわかりました。

アップグレード後、以下のようなものに置き換えることができます。

@Stateless
public class SomeBean implements IBeanLocal {

    @EJB
    IBeanLocal someBean;

    // class body here
}

私の混乱は主に、この種の自己参照の不必要な使用によって引き起こされました。Steve C が指摘したように、おそらく誰かがこの xdoclet 機能の使用方法を知らなかったのでしょう。

4

1 に答える 1

0

まず、「ローカル」ビュー タイプは、EJB 2.1 コード (2.0 ではない) を見ていることを意味します。

@ejb.ejb-ref タグが興味深いことに同意します。どこかで JNDI を使用して、同じタイプのセッション Bean の別のインスタンスをルックアップする場合にのみ役立ちます。さらに、ejb ホーム オブジェクトは Bean の EJBContext オブジェクトで使用できるため、冗長です。

元の作成者が ejb-ref の目的を知らなかった可能性は十分にあります。当時はそういうことがたくさんありました。

別のタイプの Bean への ejb-ref があった場合、通常、対応する@weblogic.ejb-local-reference-descriptionまたは@weblogic.ejb-reference-descriptionが表示されます。これらは、JNDI マッピング情報を生成するために使用されます。 ejb-name でリンクされた weblogic.xml ファイル。

いずれにしても、これらのルックアップ参照を@EJBでマークアップされたインスタンス変数に置き換えます。

完全な xdoclet ドキュメント (およびソース) は、( http://xdoclet.sourceforge.net/xdoclet/index.html )、FWIW で引き続き入手できます。

于 2014-08-11T12:56:22.450 に答える