在我的EJB Scheduler中使用@RunAs

时间:2011-02-06 17:09:50

标签: java-ee-6 scheduler jaas ejb-3.1 runas

我的业务方法有很多EJB。这些方法使用@RolesAllowed批注来检查用户是否可以执行此方法。

所以我有一个调用这些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
}

1 个答案:

答案 0 :(得分:2)

是的,这是正确的用途。

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

来自规范: run-as标识作为一个整体应用于企业bean,即适用于企业bean的业务,家庭和组件接口的所有方法,不 - 接口视图和/或Web服务端点;消息驱动bean的消息监听器方法;以及企业bean的超时回调方法;以及它们可能依次调用的bean的所有内部方法。