2

Bean (SFSB) は決して Bean (SLSB) に注入されるべきではないことを読みました。しかし、次のことを達成する正しい方法は何ですか?@Stateful@Stateless

@Stateless
public class FirstEJB
{
    @EJB
    private SecondEJB second;

    public void businessMethod()
    {
        second.businessMethod1();
        second.businessMethod2();
    }
}

second.businessMethod1()と の間で永続化する必要がある状態があるsecond.businessMethod2()ため、SecondEJBステートレスにすることはできません。businessMethod1()また、businessMethod2()メソッドを 1 つにマージする簡単な方法もありません。これはSecondEJB、2 つ以上のビジネス メソッドを持つことができ、さまざまな組み合わせで呼び出すことができるためです。

実際に私はステートフルにしようとしましSecondEJBたが、うまくいくようですが、メモリリークにつながります。注釈付きのSecondEJBメソッドはありませんが、試してみましたがうまくいきませんでした。多くのインスタンスが作成され、削除されていません。なぜ漏れるのか誰か説明できますか?@Remove@StatefulTimeoutSecondEJB

4

1 に答える 1

0

注射を使わないだけです。buisnessMethod が呼び出された時点で Bean の JNDI ルックアップを使用でき、SecondEJB インスタンスはメソッド呼び出しごとにインスタンス化されるメソッド スコープ変数になります。

于 2015-10-08T07:30:05.893 に答える