业务有个需求需要读写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上找答案的时候发现也有个兄弟提了这个问题,但是没人回答,问题都结贴了,这里算是给他回答了。
分享到:
相关推荐
/opt/IBM/WebSphere/AppServer/classes:/opt/IBM/WebSphere/AppServer/lib:/opt/IBM/WebSphere/AppServer/installedChannels:/opt/IBM/WebSphere/AppServer/lib/ext:/opt/IBM/WebSphere/AppServer/web/help:/opt/IBM...
很全的IBM WebSphere MQ 错误码大全
WebSphere 常见问题及解决办法详解 在本文中,我们将详细探讨 WebSphere 中的一些常见问题及其解决方法。WebSphere 是一个基于 Java 的应用服务器,广泛应用于企业级应用开发中。然而,在实际开发和部署过程中,...
webSphere使用教程,为TIF格式的电子书,初级教程
解决 WebSphere 不支持 JDK 新特性的问题 在 WebSphere Application Server V6.1 中,如果 JSP 中嵌入的代码包含 JDK 5.0 的特性,编译的时候会出错。这是因为 WAS6.1 采用 JDK5.0,因此需要设置相应的 JSP 引擎...
### WebSphere Commerce 使用与定制详解 #### 一、引言 在本文档中,我们将详细介绍如何使用 IBM WebSphere Commerce 平台以及如何对其进行定制化处理,以满足特定业务需求。WebSphere Commerce 是一款功能强大的...
WebSphere Application Server(简称WebSphere)是IBM推出的一款企业级应用服务器,主要用于部署和管理Java应用程序,特别是基于Java EE(Java Enterprise Edition)的应用。在WebSphere7版本中,它提供了强大的功能...
* 使用共享库:在 WebSphere 中,我们可以使用共享库来解决 jar 包冲突问题。共享库提供了一种方式来共享 jar 包,使得不同的应用程序可以共享同一个 jar 包。 * 使用不同的类加载器:在 WebSphere 中,我们可以使用...
WebSphere Application Server 启动错误诊断 在本文中,我们将详细介绍 WebSphere Application Server(WAS)启动错误的诊断方法。WAS 是一个复杂的应用服务器,启动过程中可能会出现各种错误,影响服务器的正常...
### JSF组件在WebSphere平台的配置与使用详解 #### 版本说明 在开始讨论JSF组件在WebSphere平台上的配置与使用之前,我们首先需要了解所涉及软件的版本信息,这对于确保兼容性和功能正确性至关重要。在本文档中,...
很详细的 websphere MQ错误代码 包括了最常见的所有错误 websphere MQ错误代码
Linux操作系统下WebSphere服务器的启动和停止是非常重要的操作,因为这直接关系到WebSphere服务器的使用和维护。下面将详细介绍Linux下WebSphere启动停止的过程。 一、WebSphere服务器的启动 在Linux系统下,启动...
6. **兼容性测试**:在进行jar包替换后,应进行充分的兼容性和性能测试,确保新版本的Shiro不仅解决了性能问题,而且没有引入新的错误或不兼容性。 总之,当在Websphere应用服务器上遇到与Shiro相关的性能问题时,...
3. **WebSphere版本**:了解正在使用的WebSphere版本,以便下载与之兼容的补丁。 #### 三、下载Update Installer for WebSphere server及补丁包 1. **下载Update Installer for WebSphere server**: - 访问官方...
7. **故障排查**:提供常见问题的解决方案,帮助用户识别并解决WebSphere运行中的错误和异常。 8. **集成与扩展**:讨论WebSphere与其他系统的集成,如LDAP、JMS、EJB等,以及如何使用插件和定制扩展。 9. **持续...
【标题】:“Websphere MQ入门教程-使用IBM Websphere MQ” 【正文】: IBM WebSphere MQ(原名MQSeries)是IBM提供的一款企业级的消息中间件产品,它允许不同应用程序、系统和网络在不同时区和平台之间交换消息。...
### 在Linux服务器上每周自动重启WebSphere服务配置 #### 知识点概述 本文档将详细介绍如何在Linux环境中设置cron任务来实现WebSphere服务的自动重启。此方法不仅适用于WebSphere服务,还可广泛应用于需要定时执行...
### 在Websphere中设置解决中文显示乱码问题 #### 背景介绍 在部署Web应用程序时,尤其是在处理非英文字符集(如中文)的情况下,可能会遇到字符编码不匹配导致的乱码问题。Websphere作为一款广泛使用的应用服务器...
IBM WebSphere Portal 解决方案