1

OpenEjbの @LocalClient アノテーション (組み込みコンテナー) を利用し、 @EJB アノテーションを使用して EJB を注入するテストケースがあります。

@LocalClient
public class MyTestCase {

    @EJB
    private BoxDao boxDao;
    
    ...   
    
}

BoxDao は、リモート EJB インターフェースです。ここで、テストのために、ステートフル セッション Bean である BoxDao の実装 BoxDaoBean の内部状態にアクセスする必要があります。必要な内部状態を公開する BoxDaoBean で保護されたメソッドを作成しましたが、注入された BoxDao がリモート インターフェイス プロキシであるため (BoxDaoBean にキャストできない)、テスト ケースでそれにアクセスする方法がまだ見つかりませんでした。

テスト ケースのリモート インターフェイス BoxDao の背後にあるステートフル セッション Bean にアクセスする方法はありますか? ソリューションがOpenEjb固有のものであるかどうかは問題ではありません。

更新:残念ながら、いくつかの EJB 3.0 プロジェクトを実行しているため、EJB 3.1 固有のソリューションを使用することはできません。Proxy.getInvocationHandler(boxDao) を使用すると、StatefulEjbObjectHandler 経由で OpenEjb コンテナーにアクセスできます。この方法でステートフル Bean にアクセスすることは可能ですか?

4

1 に答える 1

1

BoxDaoBeanインターフェイスを公開することもでき@LocalBeanます。@WebService1 つの EJBで、 、@Local@Remote、JAX-RS などからほぼ無制限の数のビューを公開できます。

次のように Bean を更新するだけです。

@Stateful
@LocalBean
public class BoxDaoBean implements BoxDao {
   //...
}

次に、テストに別のフィールドを追加します。

@LocalClient
public class MyTestCase {

    @EJB
    private BoxDao boxDao;

    @EJB
    private BoxDaoBean boxDaoBean;

    ...   

}
于 2012-08-28T21:15:40.340 に答える