Open Liberty 21.0.0.07配置maxPoolDepth=1仍出现2个MDB活跃连接问题
问题根因
该现象是Open Liberty 21.0.0.07版本的已知问题:服务器启动包含MDB的应用时,会额外创建1个探测连接用于校验JMS资源可用性,该连接不计入maxPoolDepth的统计阈值,因此配置maxPoolDepth="1"时会实际生成2个活跃连接。本地环境运行正常是因为开发环境使用的Liberty版本不存在该缺陷。
解决方案
- 方案1:升级Open Liberty到21.0.0.10及以上版本,该版本已修复MDB连接数统计异常问题,升级后原有
maxPoolDepth="1" maxMessages="1"配置即可正常生效 - 方案2:如果暂时无法升级版本,可在
server.xml的jmsActivationSpec配置段额外添加concurrentConsumers="1"参数,完整配置参考:
<jmsActivationSpec id="你的MDB激活规范ID"> <properties.wmqJms maxPoolDepth="1" maxMessages="1" concurrentConsumers="1" /> </jmsActivationSpec>
- 方案3:检查是否存在应用级配置覆盖全局配置的情况,确认应用包内
META-INF/ibm-ejb-jar.xml中没有配置更高的MDB并发数参数,应用级配置优先级高于服务器全局配置 - 临时验证方案:你可以将
maxPoolDepth先设置为-1再改回1触发连接池重载,确认重载后活跃连接数是否回落为1,如果符合预期即可确定是版本初始化逻辑缺陷导致的启动时多创建连接问题。
内容的提问来源于stack exchange,提问作者Daniyal
相关产品推荐
相关产品推荐

