当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:14:00  来源:本站整理

Hibernate程序操纵WAS衔接池提交事件时显现NullPointerExceptio[Java编程]

赞助商链接



  本文“Hibernate程序操纵WAS衔接池提交事件时显现NullPointerExceptio[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

Hibernate利用程序布置到WebSphere Application Server 5.1上,利用WAS的衔接池,程序在处理了对比多的 session.save(object)操作之后,在履行提交事物 trans.commit()之时呈现以下非常

java.lang.NullPointerException
at oracle.jdbc.dbaccess.DBData.clearItem(DBData.java:431)
at oracle.jdbc.dbaccess.DBDataSetImpl.clearItem(DBDataSetImpl.java:3528)
at oracle.jdbc.driver.OraclePreparedStatement.clearParameters(OraclePreparedStatement.java:3401)
at com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.resetStatement(WSJdbcConnection.java:1719)
at com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.prepareStatement(WSJdbcConnection.java:1415)
at com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.prepareStatement(WSJdbcConnection.java:1381)
at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:497)
at org.hibernate.jdbc.AbstractBatcher.prepareStatement(AbstractBatcher.java:94)
at org.hibernate.jdbc.AbstractBatcher.prepareStatement(AbstractBatcher.java:87)
at org.hibernate.jdbc.AbstractBatcher.prepareBatchStatement(AbstractBatcher.java:218)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2220)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2656)
at org.hibernate.action.EntityInsertAction.execute(EntityInsertAction.java:52)
at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:248)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:232)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:139)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:28)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)

因为开辟用的是Tomcat利用服务器,配置的Tomcat衔接池,所以在本地跑怎么操作都不会有这种错误,费了好一翻时间也没能定位,查错中老是受 java.lang.NullPointerException 的影响,一遍一各处审视代码,会是哪个变量没有初始化呢?

自我折磨了好一阵子,无奈之时去网上Google一把(其实早该这么做的,也就因为猜疑问题出在自己写的代码),才发现本来别人也碰到过近似的问题, Hibernate的官方论坛也有这种谈论.

http://www.谷歌.cn/search?complete=1&hl=zh-CN&newwindow=1&q=+oracle.jdbc.dbaccess.DBDataSetImpl.clearItem&meta=

网上有说是驱动的问题,有说是Hibernate数据库方言的问题,也有说最大缓存语句的问题

1. Delete Object error http://forum.hibernate.org/viewtopic.php?t=934050

此中提到的有换 Oracle 数据库驱动, 有人试着换成 ojdcbc14.jar 办理,最后有人说到设置 c3p0 的hibernate.c3p0.max_statements 为 0 就行

2. NullPointerException on transaction.commit() http://forum.hibernate.org/viewtopic.php?t=973414&sid=04bbd1a8951b3051c52e374a7888d35e

回贴中说是把 org.hibernate.dialect.OracleDialect 换成 org.hibernate.dialect.Oracle9Dialect, 但有人采纳这种做法无效,何况我用的还是 8.0.5 的Oracle,I 都不带.

3. WAS 6上DataSource的问题 http://www.itpub.net/743938.html

这篇贴主就直接撇名了把Data Source的Command Cache只能设为0,一旦大于0就报以上错误,看来这是一个对比明确的办理办法.于是我就在WAS的掌握台下把我所用衔接池的 语句高速缓存大小 设置为 0 ,然后重启WAS,问题得到办理.就是不知道不缓存 Statement 对性能会产生怎么样的影响,须进一步理解一下.

我也试过换数据库驱动的办法,把原有的驱动换成在我本地可用的class12.jar包,没有效果.又换成ojdbc.jar包试试,还是没用.

总结呈现以上错误的办理办法,设置WAS的数据源属性的 Command Cache(也就是语句高速缓存大小)为0, 假如用的别的衔接池产品,要设置呼应的 max_statements 为 0,属性名具体参考对应衔接池产品.

注意,改了WAS的数据源设置需求重启WAS的.


  以上是“Hibernate程序操纵WAS衔接池提交事件时显现NullPointerExceptio[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • 在Hibernate里面动态切换SChema实现访谒差别的数据库的几种办法
  • Hibernate 3新增XML关系长期性介绍
  • Hibernate配置文件在单元测试中的操纵
  • 在Hibernate中动态切换Schema
  • hibernate annoation (八 关联映射)
  • hibernate annoation (九 cascading)
  • <b>hibernate annoation (十 映射查询)</b>
  • hibernate annoation(十一 缓存Ehcache 采纳annoation)
  • Hibernate:操作配置文件生成数据库
  • hibernate annoation (一 加载)
  • hibernate annoation (二 成立表)
  • <b>hibernate annoation (三 id生成器)</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .