2013-08-27 1 views
1

Java에서 개발 된 응용 프로그램 (jdk1.5 및 DB는 Oracle 10g)입니다. 어떤 시점에서 우리의 응용 프로그램은 아래에 오류를주고 종료합니다. 인터넷에서 검색 한 결과 모든 포럼에서 "드라이버 문제 (oracle JDBC 드라이버와 DB 간의 호환성)가 될 수 있습니다.이를 해결하려면 최신 버전의 jar 파일을 교체해야합니다." 그러나 응용 프로그램을 다시 시작하면 제대로 작동하기 시작합니다. 이 오류는 매우 드물게 발생합니다. 정말로 드라이버 문제라면 응용 프로그램을 다시 시작할 때 작동하지 않아야합니다.Java 응용 프로그램의 프로토콜 위반 예외

매번 발생하지 않기 때문에 어느 시나리오에서 발생하는지 이해하고 싶습니다.

아무도 도와 드릴 수 있습니까? 내 응용 프로그램에서

오류 로그 :

SQL Error: 17401, SQLState: null 
Protocol violation 
SQL Error: 17401, SQLState: null 
Protocol violation 
SQL Error: 17401, SQLState: null 
Protocol violation 
Rollback failed 
java.sql.SQLException: Protocol violation 
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBE rror.java:134) 
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBE rror.java:179) 
at oracle.jdbc.dbaccess.DBError.check_error(DBError.j ava:1160) 
at oracle.jdbc.ttc7.Ocommoncall.receive(Ocommoncall.j ava:149) 
at oracle.jdbc.ttc7.TTC7Protocol.rollback(TTC7Protoco l.java:488) 
at oracle.jdbc.driver.OracleConnection.rollback(Oracl eConnection.java:1412) 
at net.sf.hibernate.transaction.JDBCTransaction.rollb ack(JDBCTransaction.java:86) 
at com.azure.spark.database.hibernate.util.HibernateU til.doSessionWork(HibernateUtil.java:90) 
at com.azure.spark.database.hibernate.util.HibernateU til.doSessionWork(HibernateUtil.java:59) 
at com.azure.spark.database.hibernate.util.HibernateU til.get(HibernateUtil.java:569) 
at com.azure.spark.database.hibernate.util.HibernateS ession.get(HibernateSession.java:340) 
at com.azure.spark.taskcontroller.TaskControllerCompo nent.taskCompleted(TaskControllerComponent.java:11 54) 
at com.azure.spark.taskcontroller.TaskControllerCompo nent.onTaskEvent(TaskControllerComponent.java:1111) 
at com.azure.spark.taskcontroller.tasks.AbstractTaskC omponent.run(AbstractTaskComponent.java:354) 
at java.lang.Thread.run(Thread.java:637) 
Error rolling back transaction 
net.sf.hibernate.TransactionException: Rollback failed with SQL exception: 
at net.sf.hibernate.transaction.JDBCTransaction.rollb ack(JDBCTransaction.java:91) 
at com.azure.spark.database.hibernate.util.HibernateU til.doSessionWork(HibernateUtil.java:90) 
at com.azure.spark.database.hibernate.util.HibernateU til.doSessionWork(HibernateUtil.java:59) 
at com.azure.spark.database.hibernate.util.HibernateU til.get(HibernateUtil.java:569) 
at com.azure.spark.database.hibernate.util.HibernateS ession.get(HibernateSession.java:340) 
at com.azure.spark.taskcontroller.TaskControllerCompo nent.taskCompleted(TaskControllerComponent.java:11 54) 
at com.azure.spark.taskcontroller.TaskControllerCompo nent.onTaskEvent(TaskControllerComponent.java:1111) 
at com.azure.spark.taskcontroller.tasks.AbstractTaskC omponent.run(AbstractTaskComponent.java:354) 
at java.lang.Thread.run(Thread.java:637) 
Caused by: java.sql.SQLException: Protocol violation 
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBE rror.java:134) 
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBE rror.java:179) 
at oracle.jdbc.dbaccess.DBError.check_error(DBError.j ava:1160) 
at oracle.jdbc.ttc7.Ocommoncall.receive(Ocommoncall.j ava:149) 
at oracle.jdbc.ttc7.TTC7Protocol.rollback(TTC7Protoco l.java:488) 
at oracle.jdbc.driver.OracleConnection.rollback(Oracl eConnection.java:1412) 
at net.sf.hibernate.transaction.JDBCTransaction.rollb ack(JDBCTransaction.java:86) 
... 8 more 
Error setting task status to completed 
net.sf.hibernate.HibernateException: Error attempting to do session work 
at com.azure.spark.database.hibernate.util.HibernateU til.doSessionWork(HibernateUtil.java:96) 
at com.azure.spark.database.hibernate.util.HibernateU til.doSessionWork(HibernateUtil.java:59) 
at com.azure.spark.database.hibernate.util.HibernateU til.get(HibernateUtil.java:569) 
at com.azure.spark.database.hibernate.util.HibernateS ession.get(HibernateSession.java:340) 
at com.azure.spark.taskcontroller.TaskControllerCompo nent.taskCompleted(TaskControllerComponent.java:11 54) 
at com.azure.spark.taskcontroller.TaskControllerCompo nent.onTaskEvent(TaskControllerComponent.java:1111) 
at com.azure.spark.taskcontroller.tasks.AbstractTaskC omponent.run(AbstractTaskComponent.java:354) 
at java.lang.Thread.run(Thread.java:637) 
Caused by: net.sf.hibernate.exception.GenericJDBCException: could not load: [com.azure.spark.database.hibernate.mappings.refere nce.impl.TaskImpl#43176610] 
at net.sf.hibernate.exception.ErrorCodeConverter.hand ledNonSpecificException(ErrorCodeConverter.java:90) 
at net.sf.hibernate.exception.ErrorCodeConverter.conv ert(ErrorCodeConverter.java:79) 
at net.sf.hibernate.exception.JDBCExceptionHelper.con vert(JDBCExceptionHelper.java:30) 
at net.sf.hibernate.persister.AbstractEntityPersister .convert(AbstractEntityPersister.java:1332) 
at net.sf.hibernate.persister.EntityPersister.load(En tityPersister.java:418) 
at net.sf.hibernate.impl.SessionImpl.doLoad(SessionIm pl.java:2130) 
at net.sf.hibernate.impl.SessionImpl.doLoadByClass(Se ssionImpl.java:2027) 
at net.sf.hibernate.impl.SessionImpl.get(SessionImpl. java:1936) 
at com.azure.spark.database.hibernate.util.HibernateU til$11.doSessionWork(HibernateUtil.java:573) 
at com.azure.spark.database.hibernate.util.HibernateU til.doSessionWork(HibernateUtil.java:80) 
... 7 more 
Caused by: java.sql.SQLException: Protocol violation 
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBE rror.java:134) 
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBE rror.java:179) 
at oracle.jdbc.dbaccess.DBError.check_error(DBError.j ava:1160) 
at oracle.jdbc.ttc7.Oclose.receive(Oclose.java:133) 
at oracle.jdbc.ttc7.TTC7Protocol.close(TTC7Protocol.j ava:684) 
at oracle.jdbc.driver.OracleStatement.close(OracleSta tement.java:700) 
at oracle.jdbc.driver.OraclePreparedStatement.private Close(OraclePreparedStatement.java:489) 
at oracle.jdbc.driver.OraclePreparedStatement.close(O raclePreparedStatement.java:396) 
at net.sf.hibernate.impl.BatcherImpl.closePreparedSta tement(BatcherImpl.java:273) 
at net.sf.hibernate.impl.BatcherImpl.closeStatement(B atcherImpl.java:141) 
at net.sf.hibernate.impl.BatcherImpl.closeQueryStatem ent(BatcherImpl.java:157) 
at net.sf.hibernate.impl.BatcherImpl.closeQueryStatem ent(BatcherImpl.java:104) 
at net.sf.hibernate.loader.Loader.getResultSet(Loader .java:884) 
at net.sf.hibernate.loader.Loader.doQuery(Loader.java :269) 
at net.sf.hibernate.loader.Loader.doQueryAndInitializ eNonLazyCollections(Loader.java:133) 
at net.sf.hibernate.loader.Loader.loadEntity(Loader.j ava:911) 
at net.sf.hibernate.loader.Loader.loadEntity(Loader.j ava:931) 
at net.sf.hibernate.loader.EntityLoader.load(EntityLo ader.java:59) 
at net.sf.hibernate.loader.EntityLoader.load(EntityLo ader.java:51) 
at net.sf.hibernate.persister.EntityPersister.load(En tityPersister.java:415) 
... 12 more 
+0

내 대답 http://stackoverflow.com/questions/4685021/sqlexception-protocol-violation-oracle-jdbc-driver-issue/35343994#35343994 – vsingh

답변

0

동일한 문제가있었습니다. ojdbc7.jar을 ojdbc8.jar로 바꾸 었으며 문제가 해결되었습니다. 최대 절전 모드 버전은 4.x입니다.

이것은 데이터베이스의 CLOB 필드로 인해 발생하며 다른 옵션은 데이터에 공백이나 추가 문자를 추가하는 것입니다. 더 많은 정보를 여기 https://community.oracle.com/thread/3647914