java-ee-6 - 在我的 EJB 调度程序中使用 @RunAs

标签 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
}

最佳答案

是的,这是正确的用法。

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

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

关于java-ee-6 - 在我的 EJB 调度程序中使用 @RunAs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4914804/

相关文章:

swift - 在运行时更改调度程序的时间间隔

c - 了解Linux内核中的优先级数组

java - java LoginContext.login() 如何工作?

java - 使用 Java 14 的 WildFly 19.1 上的 ClassNotFoundException : java. security.acl.Group

java - @Inject 仅适用于 CDI 容器创建的 POJO?

java - java 1.6.013 中的 @WebServlet 注释支持

java - "org.hibernate.DuplicateMappingException"错误是什么意思?

jpa-2.0 - 单例中的 PersistenceContextType.EXTENDED

c - 在免费 RTos 中实现调度程序

glassfish - Glassfish 4 中的密码加密算法