闲置30分钟后JBoss断开连接(Jboss XA Datasource with Oracle)

时间:2017-03-20 07:44:25

标签: oracle jdbc jboss

我正在使用带有oracle12c和oracle12c的wildfly-8.2.0.Final。我已经配置了XA数据源来连接oracle数据库。一旦服务器启动并忙碌,一切看起来都很好,但如果应用程序服务器空闲超过30分钟,我将低于例外:

调试消息:

  

DataBaseConnectionMgr.createNewProperties()()原因代码失败   subtext:异常消息:java.sql.SQLException:   javax.resource.ResourceException:IJ000457:未选中throwable in   managedConnectionReconnected()   cl=org.jboss.jca.core.connectionmanager.listener.TxConnectionListener@401c2dca [状态=销毁   管理   connection=org.jboss.jca.adapters.jdbc.xa.XAManagedConnection@7a0249a7   连接句柄= 0 lastUse = 1489587052205 trackByTx = false   pool=org.jboss.jca.core.connectionmanager.pool.strategy.OnePool@4581a705   MCP = SemaphoreArrayListManagedConnectionPool @ 6887a22d [池= JDBC / ORACLE / IMCTXDataSource]   的XAResource = XAResourceWrapperImpl @ 3a0fa21c [xaResource=org.jboss.jca.adapters.jdbc.xa.XAManagedConnection@7a0249a7   pad = false overrideRmValue = false productName = Oracle   productVersion = Oracle Database 12c企业版发布   12.1.0.2.0 - 使用分区,真实应用集群,自动存储管理,OLAP,高级分析和64位生产   真实应用测试选项   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>

2 个答案:

答案 0 :(得分:1)

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

1)Jboss idle-timeout-minutes。您没有设置它,它的默认值是15分钟。 (最不可能的)

2)sqlnet.ora中的配置EXPIRE_TIME sqlnet.ora expiretime

3)配置oracle db用户配置文件。 create profile

您必须在配置文件配置中检查idle_time。

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

答案 1 :(得分:0)

1#建议在未启用时使用以下数据源连接验证机制:

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

2#

              value_1   value_2
test_id                        
A1BG        -0.956960      -inf
A1BG-AS1    -1.186835 -1.689504
A1CF        -2.941882      -inf
A2M          0.966581  1.031764
A2M-AS1     -1.188544 -1.231258
A2ML1            -inf -1.787149
A2MP1            -inf      -inf
A3GALT2     -0.885212 -0.587419
A4GALT       0.981555  0.876730
A4GNT            -inf      -inf
AA06             -inf      -inf
AAAS         1.364746  1.410399
AACS         1.044108  0.983331
AACSP1      -1.421534 -1.514185

3#flush-strategy = IdleConnections

4#use-fast-fail = true(立即获得新的物理连接)