Java 将@Stateful注入MDB是否合法?

Java 将@Stateful注入MDB是否合法?,java,jakarta-ee,ejb-3.0,message-driven-bean,Java,Jakarta Ee,Ejb 3.0,Message Driven Bean,将@Stateful注入MDB是否合法 @Stateful public class InteruptBean implements Interrupt { .... } @MessageDriven(...) public class EchoTrigger implements MessageListener { @EJB Interrupt interrupt; .... } 或者更好的措辞:我可以在异步事件驱动体系结构中使用有状态EJB来传递状态吗?是的,这

将@Stateful注入MDB是否合法

@Stateful
public class InteruptBean implements Interrupt {
    ....
}

@MessageDriven(...)
public class EchoTrigger implements MessageListener {
    @EJB Interrupt interrupt;

    ....
}
或者更好的措辞:我可以在异步事件驱动体系结构中使用有状态EJB来传递状态吗?

是的,这是“合法的”,但毫无意义。MDB实例像SLSB一样被池化。SFSB超时后,MDB将失去功能


在某个时刻显式创建SFSB,然后在发送到驱动MDB的消息中传递对SFSB的引用可能会起作用。

是,这没有意义。因为有状态会话bean用于处理来自同一客户机的多个请求,所以它们具有面向客户机操作的处理。在这种情况下,MDB将是beans客户端。MDB支持单请求模型。请求到达MDB(以消息的形式)并进行处理。所以这两种类型的bean在处理模型中都不匹配。

为了解决这个问题,我发现了以下语法:@Resource private MessageDrivenContext;中断=(中断)上下文查找(“ejb/myStateful”);堆栈溢出不允许我将两个答案标记为正确,但谢谢!MDB以与SLSB相同的方式支持单请求模型,但是bean实例可以被池化,所以注入SFSB对我来说没有意义。