GlassFish 4(EJB3) - 无状态bean生命周期

时间:2015-01-31 17:47:24

标签: java java-ee glassfish ejb

根据official documentation,无状态EJB有两种状态:不存在且准备就绪。但这就是生命周期的全部内容。

我使用glassfish 4,我需要确切地知道

  1. 当创建无状态EJB实例时 - 在域启动时或者我将EJB注入某个点时?或者
  2. 当未使用的无状态EJB被破坏时 - 在域停止时或在一些空闲时间之后还是?
  3. 请帮助我。

1 个答案:

答案 0 :(得分:0)

我认为有必要从http://docs.oracle.com/cd/E18930_01/html/821-2431/abeea.html阅读以下glassfish设置:

EJB池设置为:

初始和最小池大小:池中维护的bean的初始和最小数量。有效值为0到MAX_INTEGER,默认值为8.相应的EJB部署描述符属性为stable-pool-size。

对于中等负载的系统,将此属性设置为大于零的数字。值大于零可确保始终存在池化实例来处理传入请求。

最大池大小:可以创建以满足客户端请求的最大连接数。有效值从零到MAX_INTEGER。,默认值为32.值为零表示池的大小无限制。潜在的含义是JVM堆将填充池中的对象。相应的EJB部署描述符属性是max-pool-size。

将此属性设置为代表系统的预期高负载。一个非常大的池浪费内存并可能减慢系统速度。由于争用,一个非常小的池也是低效的。

池调整大小数量:服务器正在为缓存服务时要创建或删除的Bean数。有效值从零到MAX_INTEGER,默认值为16.相应的EJB部署描述符属性为resize-quantity。

确保在更改最大池大小时重新校准池调整大小数量,以保持平衡。通常,较大的最大池大小应该具有较大的池大小调整量。

池空闲超时:允许无状态会话Bean,实体Bean或消息驱动Bean在池中空闲的最长时间。在此之后,如果bean是无状态会话bean或消息驱动程序bean,则bean将被销毁。这是服务器的提示。默认值为600秒。相应的EJB部署描述符属性是pool-idle-timeout-in-seconds。

如果池中的bean多于最大池大小,则池将按照池空闲超时指定的时间间隔以池大小调整数量的步长返回到初始和最小池大小。如果调整大小数量太小而空闲超时时间很长,您将无法看到游泳池恢复到稳定大小的速度。

相关问题