java.sql.SQLRecoverableException:Fermeture De La Connexion
Je suis en utilisant jboss7.0.2 final avec Oracle 11. Actuellement, je suis confronté à un problème qui se produit de façon aléatoire. Mais pendant la lourde charge de cette trace de l'erreur ne cesse de croître. Essayé tellement de nombreuses approches ne pouvait pas réussir.
MyDatasource Config:
<?xml version="1.0" encoding="UTF-8"?>
<datasource jndi-name="sportPool" pool-name="sportPool" enabled="true" jta="true" use-java-context="true" use-ccm="true">
<connection-url>jdbc:oracle:thin:@10.11.252.200:1521:sportsdb</connection-url>
<driver>oracleDriver</driver>
<pool>
<min-pool-size>1</min-pool-size>
<max-pool-size>75</max-pool-size>
<prefill>false</prefill>
<use-strict-min>false</use-strict-min>
<flush-strategy>FailingConnectionOnly</flush-strategy>
</pool>
<security>
<user-name>mportal</user-name>
<password>mobile</password>
</security>
<timeout>
<idle-timeout-minutes>60000</idle-timeout-minutes>
</timeout>
</datasource>
StackTrace:
nested exception is java.sql.SQLRecoverableException: Closed Connection
at org.springframework.jdbc.support.SQLExceptionSubclassTranslator.translate(SQLExceptionSubclassTranslator.java:82)
at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.translate(SQLErrorCodeSQLExceptionTranslator.java:237)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:604)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:638)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:667)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:683)
... 50 more
Caused by: java.sql.SQLRecoverableException: Closed Connection
at oracle.jdbc.driver.OracleStatement.ensureOpen(OracleStatement.java:4051)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3563)
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3628)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1493)
at org.jboss.jca.adapters.jdbc.CachedPreparedStatement.executeQuery(CachedPreparedStatement.java:111)
at org.jboss.jca.adapters.jdbc.WrappedPreparedStatement.executeQuery(WrappedPreparedStatement.java:462)
at org.springframework.jdbc.core.JdbcTemplate$1.doInPreparedStatement(JdbcTemplate.java:645)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:588)
... 56 more
Vous devez vous connecter pour publier un commentaire.
Prendre un coup d'oeil à vos paramètres de base de données - il est possible que le délai défini dans la base de données est plus court que le délai défini dans la source de données descripteur de déploiement, et la base de données se ferme les connexions.
Vérifier votre réseau, il est possible qu'il y ait quelque chose de mal avec votre pare-feu /paramètres de routage, et les connexions sont fermées/abandonné quelque part dans le milieu de la route.
Prendre un coup d'oeil à ce lien JBoss 7 De La Source De Données De Configuration. Il y a un moyen de configurer une source de données descripteur, forçant le JBoss pour vérifier la connexion lors de la vérification de sortir de la piscine. Utiliser le
valid-connection-checker
(plus rapide) oucheck-valid-connection-sql
(plus lent) et définir laou
valid-connection-checker
n'aide pas, alors cela signifie que la connexion est fermée après de contrôle de la piscine.Semble que votre perdent de connexion, dans la plupart des cas, cela se produit quand il y a des problèmes de réseau. La configuration que vous utilisez est un peu étrange;
probablement le idle-timeout minutes à l'origine de votre SQLRecoverableExceptions, je voudrais utiliser une config comme;
si vous n'avez pas de blocage long de la connexion à la base de données 20 max de la taille du pool devrait être suffisant.
Une mise à jour rapide sur comment j'ai résolu ce problème.
J'ai fait les modifications suivantes à l'extérieur de la demande-je.e dans JBOSS
Updateed ironjacamar-jdbc pot de 1.0.3 pour 1.1.0 à cet endroit "{JBOSS_HOME_7.0.2}/modules/org/jboss/ironjacamar/jdbcadapters/main/"
Stanalone.xml
Comme suggéré par npe ajouté
<check-valid-connection-sql>
.Cela a résolu le problème. Mais jboss imprime le message d'avertissement "IJ000612" dans la console, qui je pense, devrait être ok aussi longtemps que l'application devient objet de connexion valide à partir de jboss.