Java 即使使用池,MDB的寿命真的很短吗?
我有点惊讶地发现Oracle文档中有一行文字指出MDB的寿命相对较短: 消息驱动bean具有以下特征Java 即使使用池,MDB的寿命真的很短吗?,java,ejb,ejb-3.0,Java,Ejb,Ejb 3.0,我有点惊讶地发现Oracle文档中有一行文字指出MDB的寿命相对较短: 消息驱动bean具有以下特征 它们在收到单个客户端消息时执行 它们是异步调用的 它们的寿命相对较短 它们不直接表示数据库中的共享数据,但可以访问和更新这些数据 它们可以是事务感知的 他们是无国籍的 这究竟意味着将MDB合并在一起意味着什么? 与无状态会话bean相比,是否有任何特定的理由更频繁地构造/销毁这些会话bean?可以配置消息驱动池。配置MDB池的主要问题是消息到达率 MDB不同于无状态,从某种意义上说,它们是
- 它们在收到单个客户端消息时执行
- 它们是异步调用的
- 它们的寿命相对较短
- 它们不直接表示数据库中的共享数据,但可以访问和更新这些数据
- 它们可以是事务感知的
- 他们是无国籍的
与无状态会话bean相比,是否有任何特定的理由更频繁地构造/销毁这些会话bean?可以配置消息驱动池。配置MDB池的主要问题是消息到达率 MDB不同于无状态,从某种意义上说,它们是用来监听消息并执行任务,然后返回休眠状态。另一方的无状态则停留在业务层前面,监听来自表示层/web层的请求,这意味着用户负载非常沉重 相对短暂 我猜想每个EJB都与一个线程相关联,这意味着容器为它保留了一些资源。当容器需要资源时,理论上可以选择剪切MDB而不是无状态 [更新] 我必须纠正自己,如果您阅读了规范,那么即使对于会话对象(Steteless/Stateful),也会报告相同的短语相对较短的寿命。虽然实体被详细描述为长寿命: 可以是长寿命的(寿命与数据库中的数据一样长)。 实体及其主键在EJB容器崩溃后仍然存在 如果某个实体的状态正在由位于 容器崩溃时,实体的状态将恢复为 下次检索实体时上次提交的事务的状态 显然,这些短语是为了比较实体和会话对象。因此,重新消费:
- 会话对象。(相对短暂)
- 消息驱动的对象。(相对短暂)
- 实体对象。(可能是长寿的)
- 会话对象。(相对短暂)
- 消息驱动的对象。(相对短暂)
- 实体对象。(可能是长寿的)