2

統合テスト (@LocalClient 注釈付きテスト クラス) で OpenEjb ローカル サーバー (3.1.4) を使用しています。

@LocalClient
public class BoxDaoTest{

    @EJB
    private BoxDao boxDao;
    ...
}

BoxDao はステートフル セッション Bean です。OpenEjb で BoxDao のパッシベーションをトリガーして、統合テストでテストすることは可能ですか?

4

1 に答える 1

5

InitialContextテストケースでOpenEJBを起動するために使用するプロパティでステートフルコンテナを作成/設定できます。

これらの設定はトリックを行います:

final Properties p = new Properties();
p.put("MyStatefulContainer", "new://Container?type=STATEFUL");
p.put("MyStatefulContainer.Capacity", "0");
p.put("MyStatefulContainer.Frequency", "0");

p.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.LocalInitialContextFactory");
final InitialContext initialContext = new InitialContext(properties);
//lookup your beans from the initialContext

これにより、@StatefulBeanは基本的にメモリに常駐しなくなり、各メソッド呼び出しまたはライフサイクルコールバックでディスクから読み取られ、ディスクに書き戻されます。

同じことがEJB3.1APIでも実行できjavax.ejb.embeddable.EJBContainerます。

final Properties p = new Properties();
p.put("MyStatefulContainer", "new://Container?type=STATEFUL");
p.put("MyStatefulContainer.Capacity", "0");
p.put("MyStatefulContainer.Frequency", "0");

final EJBContainer container = EJBContainer.createEJBContainer(p);
Foo foo = (Foo) container.getContext().lookup("java:global/yourapp/yourbean");
于 2012-09-06T19:45:36.157 に答える