将@Stateful注入MDB是否合法?
@Stateful
public class InteruptBean implements Interrupt {
....
}
@MessageDriven(...)
public class EchoTrigger implements MessageListener {
@EJB Interrupt interrupt;
....
}
或者更好的措辞:我可以使用有状态EJB在异步事件驱动架构中传递状态吗?
答案 0 :(得分:4)
是的,没有意义。因为有状态会话bean用于处理来自同一客户端的多个请求,因此它们具有面向客户端操作的处理。在这种情况下,MDB将是bean客户端。 MDB支持单一请求模型。请求来自MDB(以消息的形式)并且它被处理。因此,两种类型的bean在处理模型中都不匹配。
答案 1 :(得分:2)
是的,它是“合法的”,但它是荒谬的。 MDB实例像SLSB一样汇集在一起。在SFSB超时后,MDB将无法运行。
可能在某些时候显式创建SFSB,然后在发送的消息中传递对SFSB的引用以驱动MDB。