【问题标题】:Security context for CDI Events & EJB ObserversCDI 事件和 EJB 观察者的安全上下文
【发布时间】:2020-10-08 00:56:48
【问题描述】:

我有一个在 Wildfly 10 (CDI 1.2) 中运行的 JEE7 应用程序。我想使用无状态 EJB 添加带有 @Asynchronous 观察者的 CDI 事件。

@Stateless
public class SBean {
    // get a static slf4j logger for the class
    protected static final Logger logger = getLogger(SBean.class);

    /**
     * Listen for an incoming event. 
     * @param metadata
     */
    @Asynchronous
    public void observeCommits(@Observes ObjectMetadata metadata){
        // determine which kind of object needs to be retrieve
        logger.info( "Saw a {} with id {}", metadata.getClazz().getName(), metadata.getId());
    }

}

EJB Observer 触发时会设置什么 SecurityContext?我试图在 Weld 文档中查找文档,但这似乎不是正确的地方,因为它只讨论了 @Observer 而没有讨论异步 EJB。

当观察者捕捉到事件时,是否会存在与触发事件时相同的安全上下文?是否有任何文档描述了此规范?

【问题讨论】:

    标签: jakarta-ee ejb wildfly cdi


    【解决方案1】:

    在这种情况下,控制行为的规范如下:

    1. CDI 1.2
    2. EJB 3.2

    从CDI的角度来看,事件观察者的调用与直接调用相应参数的方法是一样的。从 EJB 的角度来看,EJB bean 可供 CDI 注入,所有附加行为均由 EJB 规范强制执行。

    EJB 3.2 规范直接回答了这个问题:

    4.5.4 安全

    调用方安全主体通过异步方法调用进行传播。调用方安全主体传播对于异步方法调用的行为与对于同步会话 bean 调用的行为完全相同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-05
      • 1970-01-01
      相关资源
      最近更新 更多