即使汇集了MDB,MDB是否真的很短暂?

时间:2017-01-08 15:04:48

标签: java ejb ejb-3.0

我有点惊讶地发现Oracle文档中的一行,说明MDB的寿命相对较短:

  

消息驱动的bean具有以下特征。

     
      
  • 他们在收到单个客户端消息后执行。
  •   
  • 它们是异步调用的。
  •   
  • 他们相对短暂
  •   
  • 它们不代表数据库中的直接共享数据,但可以访问和更新此数据。
  •   
  • 他们可以识别交易。
  •   
  • 他们是无国籍人。
  •   

http://docs.oracle.com/javaee/6/tutorial/doc/gipko.html#gipmj

这有什么意义,预计MDB会被合并? 有没有什么特别的理由比无状态会话bean更经常地构造/破坏它们?

1 个答案:

答案 0 :(得分:0)

可以配置消息驱动池。配置MDB池的主要问题是消息到达率。

MDB与Stateless不同,从某种意义上说,它们是用于监听消息完成工作并返回休眠状态。另一方面,无状态停留在业务层前面,从来自演示文稿/网络层的请求进行监听,这意味着用户负载过重。

  

相对短暂的

我的猜测是每个EJB都与一个线程相关联,这意味着容器正在为它预留一些资源。当容器需要资源时,理论上选择削减MDB而不是无状态。

<强> [UPDATE]

我必须纠正自己,如果你读了规范,那么即使对于会话对象(Steteless / Stateful)也会报告相同的短语相对短暂的。虽然实体详细说明了很长时间:

  

可以长寿(只要数据库中存在数据)。   实体及其主键在EJB容器崩溃后仍然存在。

     

如果实体的状态是由交易更新的   容器崩溃的时间,实体的状态恢复到   下次检索实体时最后提交的事务的状态。

很明显,这些短语用于实体和会话对象之间的比较。所以,重申:

  • 会话对象。 (相对短暂)
  • 消息驱动对象。 (相对短暂)
  • 实体对象。 (可以长寿)