Jakarta ee 为什么不使用会话bean而不是消息驱动bean呢?
我想知道,为什么不使用会话bean而不是消息驱动bean呢 如果您可以从EJB调用远程方法,那么为什么还要麻烦使用消息驱动bean(比会话bean更难开发)发送/接收消息呢Jakarta ee 为什么不使用会话bean而不是消息驱动bean呢?,jakarta-ee,ejb,message-driven-bean,session-bean,Jakarta Ee,Ejb,Message Driven Bean,Session Bean,我想知道,为什么不使用会话bean而不是消息驱动bean呢 如果您可以从EJB调用远程方法,那么为什么还要麻烦使用消息驱动bean(比会话bean更难开发)发送/接收消息呢 在哪些场景中,消息驱动bean变得有用?与实体/会话bean不同,消息驱动bean异步侦听JMS队列 这不会阻塞服务器资源,因为只有当消息到达队列时才会进行处理 除了大量的Java论坛和站点外,Wikipedia还有一组很好的用例,MDB在其中派上了用场 我想知道,为什么不使用会话bean而不是消息驱动bean呢 嗯,它们
在哪些场景中,消息驱动bean变得有用?与实体/会话bean不同,消息驱动bean异步侦听JMS队列 这不会阻塞服务器资源,因为只有当消息到达队列时才会进行处理 除了大量的Java论坛和站点外,Wikipedia还有一组很好的用例,MDB在其中派上了用场 我想知道,为什么不使用会话bean而不是消息驱动bean呢 嗯,它们的用途不同,消息驱动bean允许JavaEE应用程序异步处理消息 如果您可以从EJB调用远程方法,那么为什么还要麻烦使用消息驱动bean(比会话bean更难开发)发送/接收消息呢 因为MDB提供异步性和松耦合,这在某些情况下可能是您想要/需要的:
- 用于长时间运行的作业
- 当资源不总是可用时
- 当您想要并行处理时
- 两者都有不同的用途
1) 如果您只想将其用于远程方法,那么只需使用会话Bean即可
2) 但是,如果response/result不重要,但是后面的消息对您来说很重要,那么在JMS创建队列时使用它使其工作并设置消息。但性能问题将存在
如果您需要使用方法,那么只需使用会话bean,因为它是轻量级bean。它提供了良好的性能。我要补充的是,MDB不一定是异步的,它实际上是驱动通信风格的连接器。MDB诞生于JMS,连接器API是从该用例中抽象出来的,但现在连接器/MDB关系实际上允许任何类型的通信。我对EJB有一些想法。接下来,我将进一步简化MDB/连接器的关系,以便连接器可以提供MDB可以使用的自己的注释,从而使@ActivationConfig和显式MessageListener接口的需要变得无关紧要。然后像JAX-RS这样的东西可以作为连接器/MDB来完成。@David说得对(我简化了很多)。你提到的是一个非常有趣的方向。非常感谢你分享这个,大卫。是的,我有点兴奋。我一直想在一篇博文中把它写出来,但既然我们在聊天,我终于忍住了,在另一个旁注上这么做了,“我用哪种豆子类型?”问题是,我希望我们可以通过把一切都建立在@ManagedBean上,让人们专注于他们想要使用的服务,以及他们想要如何暴露他们的bean,来解决这个问题--