我的业务方法有很多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
}
答案 0 :(得分:2)
是的,这是正确的用途。
EJB 3.2规范的第12.3.4.1节说明bean的所有方法(包括超时回调方法)都将在run-as中定义标识。
来自规范: run-as标识作为一个整体应用于企业bean,即适用于企业bean的业务,家庭和组件接口的所有方法,不 - 接口视图和/或Web服务端点;消息驱动bean的消息监听器方法;以及企业bean的超时回调方法;以及它们可能依次调用的bean的所有内部方法。