业务有个需求需要读写clob字段,于是使用spring的oracleLobHandler来解决,在本机tomcat下测试没有问题
生产环境是WAS 6.1,部署上去发现读LOB没问题,写LOB报错
Caused by: org.springframework.dao.InvalidDataAccessApiUsageException:
Couldn'tinitializeOracleLobHandler because Oracle driver classes are not available.
Note that OracleLobHandler requires Oracle JDBC driver 9i or higher!;
nested exception is java.lang.ClassNotFoundException: oracle.sql.BLOB
看这个错似乎是oracle driver不对,但是登陆系统进行其他操作都是没问题的,说明oracle driver的加载没有问题
使用的版本也是ojdbc_14g.jar,也没有问题。
google了一下发现有人认为是oracle包冲突的原因,于是仔细检查了WAS环境,删除多余的oracle包,仍然报这个错
读了一下spring OracleLobHandler的代码,怎么看都象是classLoader的问题,
于是再次google,发现有位老兄是通过hack spring的OracleLobHandler来解决,他把
con.getClass().getClassLoader()
hack成了
Thread.currentThread().getContextClassLoader()
于是我也照此办理,hack完重启,发现报错变为
org.springframework.dao.InvalidDataAccessApiUsageException: OracleLobCreator needs to work on
[oracle.jdbc.OracleConnection], not on [com.ibm.ws.rsadapter.jdbc.WSJdbcConnection]: specify a
corresponding NativeJdbcExtractor; nested exception is java.lang.ClassCastException:
com.ibm.ws.rsadapter.jdbc.WSJdbcConnection incompatible with oracle.jdbc.OracleConnection
java.lang.ClassCastException: com.ibm.ws.rsadapter.jdbc.WSJdbcConnection incompatible with
oracle.jdbc.OracleConnection
这下就很明白了,传进来的连接是WAS类型的,spring不认。
再次google这个错误,得到解决方法
将spring配置中
<bean id="nativeJdbcExtractor"
class="org.springframework.jdbc.support.nativejdbc.SimpleNativeJdbcExtractor" />
改为
<bean id="nativeJdbcExtractor"
class="org.springframework.jdbc.support.nativejdbc.WebSphereNativeJdbcExtractor" />
于是照此办理,重启WAS,问题解决。
再将hack之前的spring原始包替换回去,重启WAS,测试没有问题。只要把配置改回SimpleNativeJdbcExtractor就会
报最开始的那个错误。
最后还是想抱怨下spring,报的错实在是太有迷惑性了,JdbcExtractor用错了居然会报ClassNotFoundException: oracle.sql.BLOB
I服了U
PS:我在javaeye上找答案的时候发现也有个兄弟提了这个问题,但是没人回答,问题都结贴了,这里算是给他回答了。
分享到:
相关推荐
很全的IBM WebSphere MQ 错误码大全
webSphere使用教程,为TIF格式的电子书,初级教程
WebSphere7使用手册 WebSphere7使用手册
很详细的 websphere MQ错误代码 包括了最常见的所有错误 websphere MQ错误代码
解决WebSphere不支持JDK新特性的问题.doc
WAS WebSphere 启动 错误 troubleshooting
websphere commerce的使用即websphere commerce图解.在网上扒了半天才找到的稀品啊!IBM创建商品店铺(websphere commerce).pdf 一些其他的相关资料: ...
IBM WebSphere Portal 解决方案
webSphere指南webSphere指南webSphere指南webSphere指南webSphere指南
在websphere8.5 下部署含有CXFwebservice的war包无法正常启动,...归根结底原因不是找不到类,而是发布后war下的jar与websphere自身平台下的jar冲突了,要解决此问题就要通过在websphere下建立共享库来根除,可参考附件
websphere设计
websphere常见问题及解决办法 如 Error 404: SRVE0190E JSPG0049E
IBM WebSphere Portal 介绍,IBM门户解决方案,业务状况分析\门户解决方案
WebSphere
WEBSPHERE乱码问题的解决和处理。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
shiro项目在Websphere下项目变得很慢很卡,替换的jar包。was下使用shiro,系统卡慢。
本人自学IBM的WebSphereMQ自学笔记,内有MQ安装文档,建MQ的例子等。 1、 MQ6.0安装 2 1.1 启动MQ v6.0 安装程序 2 1.2 软件需求检查 2 1.3 WebSphere Eclipse Platform V3.0.1软件安装 2 1.4 网络配置检查 3 1.5 ...
8.1.2忽略WebSphere MQ for Windows的错误代码 104 8.1.3操作信息 104 8.2死信队列 104 8.3配置文件和问题确定 104 8.4跟踪 104 8.4.1WebSphere MQ Windows的跟踪 104 8.4.2WebSphere MQ AIX的跟踪 106 8.5首次故障...
JSF 组件WebSphere 平台配置使用说明
Websphere实用手册.pdf