MDB onMessage在关闭JDBC连接时失败

MDB onMessage在关闭JDBC连接时失败,jdbc,xa,jboss-eap-7,jboss-mdb,Jdbc,Xa,Jboss Eap 7,Jboss Mdb,在JBoss eap 7.0上运行应用程序。我有一个MDB,它也引用XA数据源oracle来持久化数据。在长时间不使用几个小时后,下一次对DB进行写操作的onMessage调用将出现以下错误 org.hibernate.exception.GenericJDBCException: Unable to acquire JDBC Connection Caused by: java.sql.SQLException: javax.resource.ResourceExcepti

在JBoss eap 7.0上运行应用程序。我有一个MDB,它也引用XA数据源oracle来持久化数据。在长时间不使用几个小时后,下一次对DB进行写操作的onMessage调用将出现以下错误

    org.hibernate.exception.GenericJDBCException: Unable to acquire JDBC Connection


    Caused by: java.sql.SQLException: javax.resource.ResourceException: 
IJ000457: Unchecked throwable in managedConnectionReconnected() 
cl=org.jboss.jca.core.connectionmanager.listener.TxConnectionListener@178ff38
2[state=DESTROYED managed 
connection=org.jboss.jca.adapters.jdbc.xa.XAManagedConnection@70289860 connection handles=0 lastReturned=1506796773697 lastValidated=1506796773525 lastCheckedOut=1506947349429 trackByTx=false 
pool=org.jboss.jca.core.connectionmanager.pool.strategy.OnePool@5968abc8 
mcp=SemaphoreConcurrentLinkedQueueManagedConnectionPool@83405c5[pool=HIF-
BannerPU] 
xaResource=XAResourceWrapperImpl@2168086b[xaResource=org.jboss.jca.adapters.j
dbc.xa.XAManagedConnection@70289860 pad=false overrideRmValue=null 
productName=Oracle productVersion=Oracle Database 12c Enterprise Edition 
Release 12.2.0.1.0 - 64bit Production jndiName=java:/jdbc/HIF-BannerPU] 
txSync=null
我应该设置validate on match=true,还是有更好的方法来确保池连接有效且处于活动状态

更新:已将配置更改为:

                <validation>
                    <validate-on-match>true</validate-on-match> 
                    <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.Or‌​acleValidConnectionC‌​hecker"/>
                    <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.Or‌​acleExceptionSorter" />
                </validation> 
                <xa-pool>
                    <is-same-rm-override>false</is-same-rm-override>
                    <no-tx-separate-pools />
                </xa-pool>  

仍然出现错误。

是所有数据源都必须设置连接池验证设置:

<validation> 

<validate-on-match>true</validate-on-match> <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.Or‌​acleValidConnectionC‌​hecker"></valid-conn‌​ection-checker> 

<exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.Or‌​acleExceptionSorter"‌​></exception-sorter> 

</validation> 
另外,请验证是否使用了相同的rm覆盖,并且在每个涉及Oracle的xa数据源中,没有明确声明tx单独的池元素


是所有数据源的连接池验证设置都是必需的。~~~true ~~~验证是否为相同的rm覆盖,并且在每个涉及Oracle特定的xa数据源中未显式声明tx单独的池元素。。。你的错误评论修复了这个问题。请张贴作为一个答案,我会接受。
<xa-pool> ... 
<is-same-rm-override>false</is-same-rm-override> 
<no-tx-separate-pools /> 
</xa-pool>