【问题标题】:Using @RunAs in my EJB Schedulers在我的 EJB 调度程序中使用 @RunAs
【发布时间】:2011-02-06 17:09:49
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    是的,这是正确的用法。

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

    来自规范: run-as 身份适用于整个企业 bean,即适用于企业 bean 的业务、家庭和组件接口的所有方法,不界面视图和/或网络服务端点;消息驱动 bean 的消息侦听器方法;以及企业bean的超时回调方法;以及它们可能依次调用的 bean 的所有内部方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多