有一个问题麻烦大家给点思路,我是在是无从下手了。详情如下:

2015-12-24 15:40:51 +08:00
 palmers

生产生一个存储过程查询产生的错误如下(这个问题无法复现,偶尔在生产上出现),以下是前面部分信息.:

2015-12-23 10:51:59.853 ERROR org.hibernate.transaction.JDBCTransaction - JDBC rollback failed
java.sql.SQLException: 违反协议: [32]
    at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:464) ~[ojdbc-5.jar:11.2.0.3.0]
    at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:192) ~[ojdbc-5.jar:11.2.0.3.0]
    at oracle.jdbc.driver.T4C7Ocommoncall.doOROLLBACK(T4C7Ocommoncall.java:68) ~[ojdbc-5.jar:11.2.0.3.0]
    at oracle.jdbc.driver.T4CConnection.doRollback(T4CConnection.java:694) ~[ojdbc-5.jar:11.2.0.3.0]
    at oracle.jdbc.driver.PhysicalConnection.rollback(PhysicalConnection.java:3943) ~[ojdbc-5.jar:11.2.0.3.0]
    at weblogic.jdbc.wrapper.PoolConnection_oracle_jdbc_driver_T4CConnection.rollback(Unknown Source) ~[com.bea.core.utils.wrapper_1.4.0.0.jar:1.10.0.0]
    at org.hibernate.transaction.JDBCTransaction.rollbackAndResetAutoCommit(JDBCTransaction.java:213) ~[hibernate-core-3.6.10.Final.jar:3.6.10.Final]
    at org.hibernate.transaction.JDBCTransaction.rollback(JDBCTransaction.java:192) ~[hibernate-core-3.6.10.Final.jar:3.6.10.Final]
    at org.hibernate.ejb.TransactionImpl.rollback(TransactionImpl.java:107) ~[hibernate-entitymanager-3.6.10.Final.jar:3.6.10.Final]
    at org.springframework.orm.jpa.JpaTransactionManager.doRollback(JpaTransactionManager.java:539) [spring-orm-3.1.1.RELEASE.jar:3.1.1.RELEASE]
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.processRollback(AbstractPlatformTransactionManager.java:845) [spring-tx-3.1.1.RELEASE.jar:3.1.1.RELEASE]
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.rollback(AbstractPlatformTransactionManager.java:822) [spring-tx-3.1.1.RELEASE.jar:3.1.1.RELEASE]
    at org.springframework.transaction.interceptor.TransactionAspectSupport.completeTransactionAfterThrowing(TransactionAspectSupport.java:411) [spring-tx-3.1.1.RELEASE.jar:3.1.1.RELEASE]
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:114) [spring-tx-3.1.1.RELEASE.jar:3.1.1.RELEASE]
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) [spring-aop-3.1.1.RELEASE.jar:3.1.1.RELEASE]
    at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:155) [spring-tx-3.1.1.RELEASE.jar:3.1.1.RELEASE]
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) [spring-aop-3.1.1.RELEASE.jar:3.1.1.RELEASE]
    at org.springframework.data.jpa.repository.support.LockModeRepositoryPostProcessor$LockModePopulatingMethodIntercceptor.invoke(LockModeRepositoryPostProcessor.java:84) [spring-data-jpa-1.1.0.RELEASE.jar:na]
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) [spring-aop-3.1.1.RELEASE.jar:3.1.1.RELEASE]
    at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:90) [spring-aop-3.1.1.RELEASE.jar:3.1.1.RELEASE]
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) [spring-aop-3.1.1.RELEASE.jar:3.1.1.RELEASE]
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202) [spring-aop-3.1.1.RELEASE.jar:3.1.1.RELEASE]
    at $Proxy358.newFindCoefficientById(Unknown Source) [na:na]

newFindCoefficientById 是存储过程调用方法。该方法被调用处的结构如下:

@Transactional(propagation = Propagation.NOT_SUPPORTED,value = "transactionManager")
public void foo() {
    newFindCoefficientById(xxx) ;
}

从以上异常信息中,如果大家能看出点什么,一定请大家给个建议!在此感激不尽!

2042 次点击
所在节点    程序员
8 条回复
angelface
2015-12-24 15:47:33 +08:00
看几个点吧:
有没有发过新版本最近?如果有, jdbc 驱动有没有动过(升级?或降级?),或是别人不小心引入了新的 jar 包。如果没有, 看 Oracle 是否动过(升级?)
palmers
2015-12-24 18:51:00 +08:00
@angelface 这些都没有 , 如果有,应该能随时复现这个问题吧?
woai110120130
2015-12-24 23:51:36 +08:00
看看协议 32 是啥么
palmers
2015-12-25 10:53:40 +08:00
@woai110120130 这个`违反协议[32]` 是 oracle 驱动抛出的是吗?
Stile
2015-12-25 11:49:01 +08:00
1.重启看看
2.检查驱动
3.缓存设置为 0
外行,哈哈
denghongcai
2015-12-25 14:43:56 +08:00
palmers
2015-12-25 15:21:34 +08:00
@Stile 重启就会好了
palmers
2015-12-25 15:22:16 +08:00
@denghongcai 这个我搜索到 检查了 情况不一样, 谢谢了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/245865

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX