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 にアクセスすることは可能ですか?