У меня работает MDB, который отправляет данные в базу данных Oracle. Источник данных XA настроен как:
<xa-datasource jndi-name="java:/jdbc/HIF-BannerPU" pool-name="HIF-BannerPU" enabled="true" spy="true" use-ccm="true" statistics-enabled="false">
<xa-datasource-property name="URL">
${hif-db-url}
</xa-datasource-property>
<driver>OracleJDBCDriver</driver>
<security>
<user-name>uifsmgr</user-name>
<password>u_pick_it</password>
</security>
<validation>
<validate-on-match>false</validate-on-match>
<background-validation>false</background-validation>
<use-fast-fail>false</use-fast-fail>
</validation>
<timeout>
<set-tx-query-timeout>false</set-tx-query-timeout>
<blocking-timeout-millis>0</blocking-timeout-millis>
<idle-timeout-minutes>0</idle-timeout-minutes>
<query-timeout>0</query-timeout>
<use-try-lock>0</use-try-lock>
<allocation-retry>0</allocation-retry>
<allocation-retry-wait-millis>0</allocation-retry-wait-millis>
</timeout>
<statement>
<share-prepared-statements>true</share-prepared-statements>
</statement>
</xa-datasource>
После работы в режиме ожидания в течение некоторого времени (не уверен точный промежуток времени, возможно, часы) следующий MDB onMessage выдает это исключение:
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
Я предполагаю, что это связано с проверкой пула соединений. Не уверен, что решение - просто установить значение true или нужно выполнить другую настройку.
Попробуйте использовать явные флаги пула Oracle:
<xa-pool>
<is-same-rm-override>false</is-same-rm-override>
<no-tx-separate-pools />
...other settings
</xa-pool>
Существовал проблемы с Oracle XA конфигурация в прошлом, не уверен, все ли разрешено атм.