JBoss 在空闲 30 分钟后断开连接(带有 Oracle 的 Jboss XA 数据源)



我正在使用wildfly-8.2.0.Final和oracle 12c和ojdbc6。我已经配置了 XA 数据源来连接 oracle 数据库。一旦服务器启动并繁忙,一切看起来都很好,但如果应用程序服务器空闲超过 30 分钟,我会低于异常:

调试消息:

在 DataBaseConnectionMgr.createNewProperties()() 上失败 原因码 潜台词:异常消息:java.sql.SQLException: javax.resource.ResourceException: IJ000457: uncheck throwable in managedConnectionReconnected() cl=org.jboss.jca.core.connectionmanager.listener.TxConnectionListener@401c2dca[状态=已销毁 管理 连接=org.jboss.jca.adapters.jdbc.xa.XAManagedConnection@7a0249a7 连接句柄=0 lastUse=1489587052205 trackByTx=false 池=org.jboss.jca.core.connectionmanager.pool.strategy.OnePool@4581a705 mcp=SemaphoreArrayListManagedConnectionPool@6887a22d[pool=jdbc/oracle/IMCTXDataSource] xaResource=XAResourceWrapperImpl@3a0fa21c[xaResource=org.jboss.jca.adapters.jdbc.xa.XAManagedConnection@7a0249a7 pad=false overrideRmValue=false productName=Oracle 产品版本=Oracle Database 12c 企业版发布 12.1.0.2.0 - 64 位生产与分区、实际应用程序集群、自动存储管理、OLAP、高级分析和 实际应用测试选项 jndiName=java:jboss/datasources/IMCTXDataSource] txSync=null] 异常堆栈跟踪: org.jboss.jca.adapters.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:154) com.unisys.trans.shared.util.jdbc.DataBaseConnectionMngr.createNewProperties(DataBaseConnectionMngr.java:515)

<xa-pool>
<min-pool-size>1</min-pool-size>
<max-pool-size>30</max-pool-size>
<prefill>false</prefill>
<use-strict-min>false</use-strict-min>
<flush-strategy>FailingConnectionOnly</flush-strategy>
<is-same-rm-override>false</is-same-rm-override>
<no-tx-separate-pools>true</no-tx-separate-pools>
<pad-xid>false</pad-xid>
<wrap-xa-resource>true</wrap-xa-resource>
</xa-pool>

我知道终止空闲连接的三种机制。

1) Jboss 空闲超时分钟数。您没有设置它,它的默认值是 15 分钟(可能性最小)

2) 在 sqlnet.ora EXPIRE_TIME sqlnet.ora 过期时间中的配置

3) 配置预言机数据库用户配置文件。创建个人资料

您必须在配置文件配置中签入idle_time。

select * from dba_profiles where PROFILE = (SELECT profile FROM dba_users WHERE USERNAME =user);

1# 建议使用以下数据源连接验证机制(如果未启用):

<validation>
<validate-on-match>true</validate-on-match>
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleValidConnectionChecker"></valid-connection-checker>
<exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleExceptionSorter"></exception-sorter>
</validation>

2#

<xa-pool>
...
<is-same-rm-override>false</is-same-rm-override>
<no-tx-separate-pools />
</xa-pool>

3#刷新策略 = 空闲连接

4#使用快速失败 = true(立即获得新的物理连接)

最新更新