2011-02-06 7 views
3

私はビジネスメソッドを持つ多くのEJBを持っています。これらのメソッドは@RolesAllowedアノテーションを使用して、ユーザーがこのメソッドを実行できるかどうかをチェックします。EJB Schedulerで@RunAsを使用する

私はこれらのEJBメソッドを呼び出すEJBスケジューラを持っています。 EJBスケジューラは匿名ユーザーで実行されるため、認証に失敗します。

スケジューラを他の役割でどのように実行できますか?テストの提案については、@ RunAs( "SYSTEM")アノテーションを付けて実行しますが、これが正しいかどうかはわかりません。

マイスケジューラクラス

@RunAs("SYSTEM") 
public class InboxScheduler { 
    protected void inboxFileScan(Timer t) { 
     receiptFilesService.receiptFiles(); 
    } 
}

マイEJBクラス

@RolesAllowed("SYSTEM") 
public void receiptFiles() { 
    // do anything 
}

答えて

2

はい、それは右の使用です。

EJB 3.2仕様の12.3.4.1節では、Beanのすべてのメソッド(タイムアウト・コールバック・メソッドを含む)はrun-asで定義されたIDを持つことを示しています。スペックから

実行としてのアイデンティティは、エンタープライズBeanのビジネス、家庭、およびコンポーネントインタフェースのすべてのメソッドに、つまり、全体としてエンタープライズBeanに適用されていないインタフェースビュー、および/またはWebサービスエンドポイント。メッセージドリブンBeanのメッセージリスナーメソッドに渡します。およびエンタープライズBeanのタイムアウトコールバックメソッドそして彼らが呼び出している可能性のあるBeanのすべての内部メソッド。

+0

ありがとうございます@ victor-herrera –

関連する問題