2011-02-06 6 views
3

저는 비즈니스 메소드가있는 많은 EJB를 가지고 있습니다. 이 메소드는 @RolesAllowed 주석을 사용하여 사용자가이 메소드를 실행할 수 있는지 확인합니다.EJB 스케쥴러에서 @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의 모든 내부 메소드.

+0

고맙습니다. @ victor-herrera –