在我的EJB调度程序中使用@RunAs

问题描述:

我有许多使用我的业务方法的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 
}

是的,这是一个正确的使用。

EJB 3.2规范的第12.3.4.1节指出,您的bean的所有方法(包括超时回调方法)都将在run-as中定义标识。

从规格:的run-as标识适用于企业bean作为一个整体,也就是给企业Bean的业务,家庭和分量接口,无接口视图,所有的方法和/或Web服务端点;到消息驱动bean的消息监听器方法;以及企业bean的超时回调方法;以及它们可能依次调用的所有bean的内部方法。

+0

谢谢@ victor-herrera – 2011-03-07 04:59:52