- 浏览: 35971 次
- 性别:
- 来自: 杭州
文章分类
最新评论
项目发布在WAS5上的,采用ORACLE11G数据库,通过WAS的数据源连接,
在以下语句时出错了:PreparedStatement pstmt = conn.prepareStatement(sql);
出错信息是:
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)
看上去像是数据库驱动的问题,于是就挨个换驱动。
但是还是不行……
程序上也莫名其妙,看不出问题。
网上有这种解决方法:(http://www.blogjava.net/Unmi/archive/2007/04/21/124160.html)
Hibernate程序使用WAS连接池提交事务时出现 NullPointerException
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.google.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的。
直接试了第3种方式,事实证明是有效果的。
咨询了客服,说这个“语句高速缓存大小”是指同时运行的sql语句及语句长度的限制。
设为0则是不限制。
说是,如果服务器性能比较好,用户不是特别多的话,可以这样设。
在以下语句时出错了:PreparedStatement pstmt = conn.prepareStatement(sql);
出错信息是:
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)
看上去像是数据库驱动的问题,于是就挨个换驱动。
但是还是不行……
程序上也莫名其妙,看不出问题。
网上有这种解决方法:(http://www.blogjava.net/Unmi/archive/2007/04/21/124160.html)
Hibernate程序使用WAS连接池提交事务时出现 NullPointerException
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.google.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的。
直接试了第3种方式,事实证明是有效果的。
咨询了客服,说这个“语句高速缓存大小”是指同时运行的sql语句及语句长度的限制。
设为0则是不限制。
说是,如果服务器性能比较好,用户不是特别多的话,可以这样设。
发表评论
-
Oracle12c连接问题ORA-28040:没有匹配的验证协议
2014-12-15 10:19 11809使用hibernate 连接oracle12c时报名如下 OR ... -
ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务
2014-12-15 09:59 553oracle12c安装成功后,客户端连接报错误信息“ORA-1 ... -
ORACLE存储过程传自定义数组参数问题
2014-10-10 09:50 1854问题来自于通过存储过程保存数据时出现以下错误 java.sql ... -
PreparedStatement的setString()长度
2014-09-09 11:40 831前段时间在做一登录模块时,遇到一个文本输入的问题。即,文本的最 ... -
ORA-00376 此时无法读取文件
2014-01-10 11:36 2744在查询一个表的时候,进行count(*)统计的时候,报了下面这 ... -
ORACLE查看并修改最大连接数
2013-11-15 12:37 452第一步,在cmd命令行,输 ... -
IO异常
2013-10-12 14:09 0IO error java.net.SocketExcepti ... -
java.sql.SQLException: Io 异常: Connection refused
2013-08-23 16:46 0程序连接oracle11g数据库时出现以下错误: java.s ... -
java.sql.SQLException: Io 异常: Got minus one from a read call解决综合
2013-08-23 16:36 2124Caught: java.sql.SQLException: ... -
Oracle中的DDL语句
2013-08-15 15:35 879SQL StatementsSELECTData retrie ... -
理解oracle中连接和会话
2013-08-15 09:42 6591. 概念不同: ... -
oracle临时表的用法总结
2013-08-14 17:39 633目前所有使用Oracle作为数据库支撑平台的应用,大部分数据量 ... -
JAVA调用oracle存储过程返回游标出现“对象不再存在”问题
2013-08-13 11:16 2366运行在was5.1上的应用某个功能在DAO中调用存储过程返回游 ...
相关推荐
关于 WebSphere 的应用部署关于 WebSphere 的应用部署
关于WebSphere建立jdbc数据源
详细介绍了如何安装websphere软件平台,如何在上面发布包并能成功运行系统,如何正确卸载websphere等。
webSphere指南webSphere指南webSphere指南webSphere指南webSphere指南
往数据库插入数据时,有时候可以,有时失败,报错java.lang.NullPointerException oracle.jdbc.dbaccess.DBData.clearItem(DBData.java:431) 在websphere通过getClassLoader().getResource("").getPath()取配置文件...
was相关资料: Websphere安装步骤 websphere安装后配置说明 Websphere实用手册 WebSphere+v6.1配置文档
websphere设计
WebSphere
websphere commerce的使用即websphere commerce图解.在网上扒了半天才找到的稀品啊!IBM创建商品店铺(websphere commerce).pdf 一些其他的相关资料: ...
WebSphere Application Server v7.1互补产品 WAS v7.0 的价值在IBM z/OS WebSphere Application Server Version 7.0 特色 WebSphere Application Server Version V7.0技术简介 WebSphere Application Server v...
第一部分 Websphere MQ原理和体系结构 11 第一章Websphere MQ原理 11 目标 11 1.1中间件 11 1.1.1中间件的优点 11 1.1.2中间件的分类 12 1.2三种通信技术的比较 13 1.3 WebSphere MQ的原理 15 1.4 WebSphere MQ的...
WebSphere在Myeclipse中的整合,Myeclipse下增加WebSphere的支持
关于Websphere的认证考试,希望对大家有帮助
关于websphere的文档,需要的下载看看
从网上收集的一个关于websphere的一个ppt文档,希望可以对websphere有个大概的了解。
linux 下websphere安装linux 下websphere安装linux 下websphere安装linux 下websphere安装linux 下websphere安装
websphere7.0websphere7.0
WebSphere介绍: WebSphere Studio,一个Web站点开发和设计工具包,包括项目管理,Java Servlet代码生成器,HTML写作工具,各种Script的编制工具,以及JAVA代码(Beans和Servlets)的开发工具。 WebSphere应用...
WebSphere Application Server v7.1互补产品 WAS v7.0 的价值在IBM z/OS WebSphere Application Server Version 7.0 特色 WebSphere Application Server Version V7.0技术简介 WebSphere Application Server v...
关于WebSphere建立jdbc数据源及项目部署