我有点惊讶地发现Oracle文档中的一行,说明MDB的寿命相对较短:
消息驱动的bean具有以下特征。
- 他们在收到单个客户端消息后执行。
- 它们是异步调用的。
- 他们相对短暂。
- 它们不代表数据库中的直接共享数据,但可以访问和更新此数据。
- 他们可以识别交易。
- 他们是无国籍人。
http://docs.oracle.com/javaee/6/tutorial/doc/gipko.html#gipmj
这有什么意义,预计MDB会被合并? 有没有什么特别的理由比无状态会话bean更经常地构造/破坏它们?
答案 0 :(得分:0)
可以配置消息驱动池。配置MDB池的主要问题是消息到达率。
MDB与Stateless不同,从某种意义上说,它们是用于监听消息完成工作并返回休眠状态。另一方面,无状态停留在业务层前面,从来自演示文稿/网络层的请求进行监听,这意味着用户负载过重。
相对短暂的
我的猜测是每个EJB都与一个线程相关联,这意味着容器正在为它预留一些资源。当容器需要资源时,理论上选择削减MDB而不是无状态。
<强> [UPDATE] 强>
我必须纠正自己,如果你读了规范,那么即使对于会话对象(Steteless / Stateful)也会报告相同的短语相对短暂的。虽然实体详细说明了很长时间:
可以长寿(只要数据库中存在数据)。 实体及其主键在EJB容器崩溃后仍然存在。
如果实体的状态是由交易更新的 容器崩溃的时间,实体的状态恢复到 下次检索实体时最后提交的事务的状态。
很明显,这些短语用于实体和会话对象之间的比较。所以,重申: