Jboss异常:SQL Error 17002和SQL Error 17008

来源:互联网 发布:经传软件跟风统计 编辑:程序博客网 时间:2024/05/16 03:57

原系统为行业内业务系统,布署了两套系统,分别采用Jboss和webLogic作为服务器,两套系统在同一个物理机器上,使用两个端口。

服务器:weblogic12.1.2     Jboss eap6.0

数据库:oracle12(另一个物理机器,两套系统共用)


jboss系统在试运行过程中,会不定时挂掉,经查询jboss日志,当系统挂掉时,会报SQL Error 17008和SQL Error 17002的错误,如下:

09:24:41,771 WARN  [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (http-/0.0.0.0:8089-11) SQL Error: 17008, SQLState: 9999909:24:41,771 ERROR [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (http-/0.0.0.0:8089-11) Closed Connection09:24:41,771 ERROR [org.jboss.as.ejb3.tx.CMTTxInterceptor] (http-/0.0.0.0:8089-11) javax.ejb.EJBTransactionRolledbackException: org.hibernate.exception.GenericJDBCException: Closed Connection09:24:41,772 ERROR [org.jboss.as.ejb3.invocation] (http-/0.0.0.0:8089-11) JBAS014134: EJB Invocation failed on component JPADAOImpl for method public abstract java.util.List com.XXXX.getObjects(java.lang.String,boolean): javax.ejb.EJBTransactionRolledbackException: org.hibernate.exception.GenericJDBCException: Closed Connectionat org.jboss.as.ejb3.tx.CMTTxInterceptor.handleInCallerTx(CMTTxInterceptor.java:138) [jboss-as-ejb3-7.1.2.Final-redhat-1.jar:7.1.2.Final-redhat-1]at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInCallerTx(CMTTxInterceptor.java:203) [jboss-as-ejb3-7.1.2.Final-redhat-1.jar:7.1.2.Final-redhat-1]at org.jboss.as.ejb3.tx.CMTTxInterceptor.required(CMTTxInterceptor.java:305) [jboss-as-ejb3-7.1.2.Final-redhat-1.jar:7.1.2.Final-redhat-1]
......

Caused by: javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: Closed Connectionat org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1372) [hibernate-entitymanager-4.1.3.Final-redhat-1.jar:4.1.3.Final-redhat-1]at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1295) [hibernate-entitymanager-4.1.3.Final-redhat-1.jar:4.1.3.Final-redhat-1]at org.hibernate.ejb.QueryImpl.getSingleResult(QueryImpl.java:317) [hibernate-entitymanager-4.1.3.Final-redhat-1.jar:4.1.3.Final-redhat-1]
......

Caused by: org.hibernate.exception.GenericJDBCException: Closed Connectionat org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:54) [hibernate-core-4.1.3.Final-redhat-1.jar:4.1.3.Final-redhat-1]at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125) [hibernate-core-4.1.3.Final-redhat-1.jar:4.1.3.Final-redhat-1]at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110) [hibernate-core-4.1.3.Final-redhat-1.jar:4.1.3.Final-redhat-1]
......

Caused by: java.sql.SQLException: Closed Connectionat oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:70)at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:133) [ojdbc14.jar:Oracle JDBC Driver version - "10.2.0.3.0"]at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:199) [ojdbc14.jar:Oracle JDBC Driver version - "10.2.0.3.0"]at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:263) [ojdbc14.jar:Oracle JDBC Driver version - "10.2.0.3.0"]
......

-----------------------------------------------------------------------------------------------------

09:24:54,605 WARN  [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (http-/0.0.0.0:8089-7) SQL Error: 17002, SQLState: 0800609:24:54,605 ERROR [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (http-/0.0.0.0:8089-7) Io exception: Connection timed out09:24:54,606 ERROR [org.jboss.as.ejb3.tx.CMTTxInterceptor] (http-/0.0.0.0:8089-7) javax.ejb.EJBTransactionRolledbackException: org.hibernate.exception.JDBCConnectionException: Io exception: Connection timed out09:24:54,606 ERROR [org.jboss.as.ejb3.invocation] (http-/0.0.0.0:8089-7) JBAS014134: EJB Invocation failed on component JPADAOImpl for method public abstract java.lang.Object com.XXXX.jpa.JPADAO.getSingleObject(java.lang.String,java.lang.Object[]): javax.ejb.EJBTransactionRolledbackException: org.hibernate.exception.JDBCConnectionException: Io exception: Connection timed outat org.jboss.as.ejb3.tx.CMTTxInterceptor.handleInCallerTx(CMTTxInterceptor.java:138) [jboss-as-ejb3-7.1.2.Final-redhat-1.jar:7.1.2.Final-redhat-1]at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInCallerTx(CMTTxInterceptor.java:203) [jboss-as-ejb3-7.1.2.Final-redhat-1.jar:7.1.2.Final-redhat-1]at org.jboss.as.ejb3.tx.CMTTxInterceptor.required(CMTTxInterceptor.java:305) [jboss-as-ejb3-7.1.2.Final-redhat-1.jar:7.1.2.Final-redhat-1]
......

Caused by: javax.persistence.PersistenceException: org.hibernate.exception.JDBCConnectionException: Io exception: Connection timed outat org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1372) [hibernate-entitymanager-4.1.3.Final-redhat-1.jar:4.1.3.Final-redhat-1]at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1295) [hibernate-entitymanager-4.1.3.Final-redhat-1.jar:4.1.3.Final-redhat-1]at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:265) [hibernate-entitymanager-4.1.3.Final-redhat-1.jar:4.1.3.Final-redhat-1]
......

Caused by: org.hibernate.exception.JDBCConnectionException: Io exception: Connection timed outat org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:131) [hibernate-core-4.1.3.Final-redhat-1.jar:4.1.3.Final-redhat-1]at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49) [hibernate-core-4.1.3.Final-redhat-1.jar:4.1.3.Final-redhat-1]at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125) [hibernate-core-4.1.3.Final-redhat-1.jar:4.1.3.Final-redhat-1]at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110) [hibernate-core-4.1.3.Final-redhat-1.jar:4.1.3.Final-redhat-1]
......

Caused by: java.sql.SQLRecoverableException: Io exception: Connection timed outat oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:101)at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:133) [ojdbc14.jar:Oracle JDBC Driver version - "10.2.0.3.0"]at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:199) [ojdbc14.jar:Oracle JDBC Driver version - "10.2.0.3.0"]at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:263) [ojdbc14.jar:Oracle JDBC Driver version - "10.2.0.3.0"]at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:521) [ojdbc14.jar:Oracle JDBC Driver version - "10.2.0.3.0"]
......

Caused by: java.net.SocketException: Connection timed outat java.net.SocketInputStream.socketRead0(Native Method) [rt.jar:1.6.0_30]at java.net.SocketInputStream.read(SocketInputStream.java:129) [rt.jar:1.6.0_30]at oracle.net.ns.Packet.receive(Packet.java:240) [ojdbc14.jar:Oracle JDBC Driver version - "10.2.0.3.0"]at oracle.net.ns.DataPacket.receive(DataPacket.java:92) [ojdbc14.jar:Oracle JDBC Driver version - "10.2.0.3.0"]
......


从日志上看,是因为数据库连接关闭导致发生异常。调整数据库连接池大小、增加事务超时时间均无效果。


解决办法:

Jboss的配置文件standalone.xml:向datasources节点中的datasource子节点增加validation节点,如下

<datasources><datasource jta="true" jndi-name="java:jboss/datasources/OracleDS" pool-name="OracleDS" enabled="true" use-java-context="true" use-ccm="true"><connection-url>jdbc:oracle:thin:@IP地址:1521:orcl</connection-url><driver-class>oracle.jdbc.driver.OracleDriver</driver-class><driver>oracle</driver><pool><min-pool-size>2</min-pool-size><max-pool-size>20</max-pool-size><prefill>true</prefill><use-strict-min>false</use-strict-min><flush-strategy>FailingConnectionOnly</flush-strategy></pool><security><user-name>DBUserName</user-name><password>DBPassword</password></security><span style="color:#ff0000;"><validation><valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleValidConnectionChecker"/><stale-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleStaleConnectionChecker"/><exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleExceptionSorter"/></validation></span></datasource><drivers><driver name="oracle" module="com.oracle"><xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class></driver></drivers></datasources>
对数据库连接进行验证。


0 0
原创粉丝点击