6

2つのビューを定義するEJBがあると仮定します。

  • ローカルビジネス、
  • リモートビジネス。

両方のインターフェイスは同じメソッドシグネチャを共有するため、次のようになります。

public interface MyBusinessCommon {
    void myMethod(Object o);
}

@Local
public interface MyBusinessLocal extends MyBusinessCommon { }

@Remote
public interface MyBusinessRemote extends MyBusinessCommon { }

@Stateless
public class MyBusinessBean implements MyBusinessLocal, MyBusinessRemote {
    public void myMethod(Object o) {
        // ...
    }
}

EJB自体(またはそのインターセプター)内からどのEJBビューが呼び出されたかを把握する方法はありますか?

使用するビューに応じて異なる認証手順を実行したいとします。リモートはより制約されるべきであり、ローカルはそうではありません。

呼び出すことはできますがSessionContext#getInvokedBusinessInterface()、これはクラスオブジェクトに関する情報のみを提供します。EJBセマンティクスに関する情報は提供しません。単純にリフレクションを使用してインターフェースまたはBean上のアノテーションの存在をチェックするだけでは不十分です(で定義されたビューはejb-jar.xmlどうですか?)

ストレートEJB仕様を使用してそれが可能かどうかは疑問ですが、おそらく私が見逃したことがあります。

そうでない場合、アプリケーションサーバーの内部からこの情報を取得することは可能ですか?(JBoss AS 7.x、Glassfish 3.x、TomEE 1.5.1のみを考えてみましょう)。

4

1 に答える 1