4

将@Stateful 注入 MDB 是否合法?

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

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

    ....
}

或者更好的表述:我可以使用有状态 EJB 在异步事件驱动架构中传递状态吗?

4

2 回答 2

4

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

于 2011-06-30T04:58:26.587 回答
2

是的,它是“合法的”,但它是荒谬的。MDB 实例像 SLSB 一样被池化。SFSB 超时后,MDB 将无法正常工作。

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

于 2011-06-30T04:41:52.113 回答