Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 即使使用池,MDB的寿命真的很短吗?_Java_Ejb_Ejb 3.0 - Fatal编程技术网

Java 即使使用池,MDB的寿命真的很短吗?

Java 即使使用池,MDB的寿命真的很短吗?,java,ejb,ejb-3.0,Java,Ejb,Ejb 3.0,我有点惊讶地发现Oracle文档中有一行文字指出MDB的寿命相对较短: 消息驱动bean具有以下特征 它们在收到单个客户端消息时执行 它们是异步调用的 它们的寿命相对较短 它们不直接表示数据库中的共享数据,但可以访问和更新这些数据 它们可以是事务感知的 他们是无国籍的 这究竟意味着将MDB合并在一起意味着什么? 与无状态会话bean相比,是否有任何特定的理由更频繁地构造/销毁这些会话bean?可以配置消息驱动池。配置MDB池的主要问题是消息到达率 MDB不同于无状态,从某种意义上说,它们是

我有点惊讶地发现Oracle文档中有一行文字指出MDB的寿命相对较短:

消息驱动bean具有以下特征

  • 它们在收到单个客户端消息时执行
  • 它们是异步调用的
  • 它们的寿命相对较短
  • 它们不直接表示数据库中的共享数据,但可以访问和更新这些数据
  • 它们可以是事务感知的
  • 他们是无国籍的

这究竟意味着将MDB合并在一起意味着什么?
与无状态会话bean相比,是否有任何特定的理由更频繁地构造/销毁这些会话bean?

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

MDB不同于无状态,从某种意义上说,它们是用来监听消息并执行任务,然后返回休眠状态。另一方的无状态则停留在业务层前面,监听来自表示层/web层的请求,这意味着用户负载非常沉重

相对短暂

我猜想每个EJB都与一个线程相关联,这意味着容器为它保留了一些资源。当容器需要资源时,理论上可以选择剪切MDB而不是无状态

[更新]

我必须纠正自己,如果您阅读了规范,那么即使对于会话对象(Steteless/Stateful),也会报告相同的短语相对较短的寿命。虽然实体被详细描述为长寿命:

可以是长寿命的(寿命与数据库中的数据一样长)。 实体及其主键在EJB容器崩溃后仍然存在

如果某个实体的状态正在由位于 容器崩溃时,实体的状态将恢复为 下次检索实体时上次提交的事务的状态

显然,这些短语是为了比较实体和会话对象。因此,重新消费:

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

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

MDB不同于无状态,从某种意义上说,它们是用来监听消息并执行任务,然后返回休眠状态。另一方的无状态则停留在业务层前面,监听来自表示层/web层的请求,这意味着用户负载非常沉重

相对短暂

我猜想每个EJB都与一个线程相关联,这意味着容器为它保留了一些资源。当容器需要资源时,理论上可以选择剪切MDB而不是无状态

[更新]

我必须纠正自己,如果您阅读了规范,那么即使对于会话对象(Steteless/Stateful),也会报告相同的短语相对较短的寿命。虽然实体被详细描述为长寿命:

可以是长寿命的(寿命与数据库中的数据一样长)。 实体及其主键在EJB容器崩溃后仍然存在

如果某个实体的状态正在由位于 容器崩溃时,实体的状态将恢复为 下次检索实体时上次提交的事务的状态

显然,这些短语是为了比较实体和会话对象。因此,重新消费:

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

“在生命周期结束时,容器调用带注释的@PreDestroy方法(如果有的话)。然后bean的实例就可以进行垃圾收集了。”好的,但是它如何处理池呢?在这种情况下,我希望bean应该返回池中。我错了吗?这很可能是特定于容器的行为。“在生命周期结束时,容器调用带注释的@PreDestroy方法(如果有的话)。然后bean的实例就可以进行垃圾收集了。”好的,但它如何处理池呢?在这种情况下,我希望bean应该返回池中。我错了吗?这很可能是特定于容器的行为。这听起来很合理,但我想知道是否有证据?我没有见过这样的情况。根据规范,MDB和无状态都是“相对短暂的”。因此,MDB的构造/解构频率并不比无状态bean高,但它们具有相同的行为。这听起来很合理,但我想知道是否有证据?我没有见过这样的情况。根据规范,MDB和无状态都是“相对短暂的”。因此,MDB的构造/解构频率并不比无状态bean高,但它们具有相同的行为。