Tenho um aplicação que faz um conexão com banco Oracle usando um datasource JNDI, a aplicação conecta-se normal e funciona normalmente por alguns dias, repentinamento a conexão cai e começa a apresentar o erro :
Unable to get managed connection for lote; - nested throwable: (javax.resource.ResourceException: Unable to get managed connection for lote)
Quando executo testes o banco esta normal e outras aplicações estão conectando normalmente. Então eu simplesmente faço undeploy do arquixo XML do datasource e deploy novamente a conexão volta ao normal.
O que pode estar causando esse erro ? E existe alguma forma de quando ocorrer esse erro no JNDI a própria aplicação refazer a conexao JNDI.
Segue abaixo o XML do datasource:
<?xml version="1.0" encoding="UTF-8"?>
<!-- $Id: mysql-ds.xml 41016 2006-02-07 14:23:00Z acoliver $ -->
<!--
Datasource config for MySQL using 3.0.9 available from:
http://www.mysql.com/downloads/api-jdbc-stable.html
-->
<datasources>
<local-tx-datasource>
<jndi-name>lote</jndi-name>
<connection-url>jdbc:oracle:thin:@XXX.XXX.XXX.XXX:1521:xxx</connection-url>
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
<user-name>usario</user-name>
<password>senha</password>
<exception-sorter-class-name>
org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter
</exception-sorter-class-name>
<!--
should only be used on drivers after 3.22.1 with "ping" support
<valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLValidConnectionChecker</valid-connection-checker-class-name>
-->
<!--
sql to call when connection is created <new-connection-sql>some
arbitrary sql</new-connection-sql>
-->
<!--
sql to call on an existing pooled connection when it is obtained from
pool - MySQLValidConnectionChecker is preferred for newer drivers
<check-valid-connection-sql>some arbitrary
sql</check-valid-connection-sql>
-->
<min-pool-size>5</min-pool-size>
<max-pool-size>500</max-pool-size>
<idle-timeout-minutes>1</idle-timeout-minutes>
<track-statements />
<!--
corresponding type-mapping in the standardjbosscmp-jdbc.xml
(optional)
-->
<!--metadata>
<type-mapping>mySQL</type-mapping>
</metadata-->
</local-tx-datasource>
</datasources>
Segue abaixo o codigo que utilizo na aplicação para conexão:
InitialContext ctx = null;
DataSource ds = null;
ctx = new InitialContext();
ds = (DataSource) ctx.lookup("java:comp/env/jdbc/lote");
Connection conn = (ds.getConnection());
Obrigado