将@Stateful注入MDB是否合法?

时间:2011-06-29 21:35:30

标签: java java-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在异步事件驱动架构中传递状态吗?

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

是的,它是“合法的”,但它是荒谬的。 MDB实例像SLSB一样汇集在一起​​。在SFSB超时后,MDB将无法运行。

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