5.4. 可能需要指示企业 bean 子系统调整的例外
Stateless Jakarta Enterprise Beans 实例组不够大,或者超时太低
javax.ejb.EJBException: JBAS014516: Failed to acquire a permit within 20 SECONDS at org.jboss.as.ejb3.pool.strictmax.StrictMaxPool.get(StrictMaxPool.java:109)javax.ejb.EJBException: JBAS014516: Failed to acquire a permit within 20 SECONDS at org.jboss.as.ejb3.pool.strictmax.StrictMaxPool.get(StrictMaxPool.java:109)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 企业 bean 线程池不够大,或者企业 bean 需要比调用超时更长的时间
java.util.concurrent.TimeoutException: No invocation response received in 300000 milliseconds
java.util.concurrent.TimeoutException: No invocation response received in 300000 millisecondsCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.4.1. 有状态会话 Bean 的默认全局超时值 复制链接链接已复制到粘贴板!
在 ejb3 子系统中,您可以使用 default-stateful-bean-session-timeout 属性为服务器实例上部署的所有有状态会话 Bean (SFSB)配置默认的全局超时值。
使用 default-stateful-bean-session-timeout 属性,您可以在 ejb3 子系统中使用以下管理 CLI 操作:
-
管理 CLI 中的
read-attribute操作,以查看属性的当前全局超时值。 -
使用管理 CLI 配置属性的
write-attribute操作。
属性行为因服务器模式而异。例如:
- 在单机服务器中运行时,配置的值将应用到应用服务器上部署的所有 SFSB。
- 在受管域中运行服务器时,服务器组内服务器实例上部署的所有 SFSB 都接收并发超时值。
当您更改属性的全局超时值时,更新的设置仅适用于新部署。您必须重新加载服务器,才能将新设置应用到当前部署。
默认情况下,属性值设为 -1, 这意味着部署的 SFSB 配置为永不超时。但是,您可以为属性配置以下类型的有效值:
-
当您将属性值设为
0时,属性会立即标记被ejb容器移除的合格 SFSB。 -
当您设置大于
0的属性值时,SFSB 会在ejb容器移除有资格的 SFSB 前保持闲置指定时间(以毫秒为单位)。
您仍然可以使用预先存在的 @StatefulTimeout 注释或 stateful-timeout 元素(位于 ejb-jar.xml 部署描述符中)来配置 SFSB 的超时值。但是,设置此类配置会将默认的全局超时值覆盖 SFSB。
有两个方法用于验证您为属性设置的新值:
-
在管理 CLI 中使用
read-attribute操作。 -
检查服务器配置文件的
ejb3子系统部分。