在我的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的内部方法。
谢谢@ victor-herrera – 2011-03-07 04:59:52