文档章节

WebLogic JNDI 查询Clob值失败 (Mybatis+Spring+SpringMVC)

 中国租女友网
发布于 2014/06/18 15:50
字数 698
阅读 208
收藏 0

项目开始使用的数据源是:com.mchange.v2.c3p0.ComboPooledDataSource

后来部署到WebLogic服务器上、把数据源变成了:WebLogic的JNDI

出现问题类转换异常:weblogic.jdbc.wrapper.Clob_oracle_sql_CLOB 转换 oracle.sql.CLOB 失败

是因为Mybatis使用clob字段时、需要重写TypeHandler接口 实现clob转换


而weblogic有自带的CLOB字段、发生类转换异常


解决办法:下载weblogic包、保留jdbc类、引用到项目lib目录。(成功解决问题)


例子:http://hussion.iteye.com/blog/1530696

package utils;

import java.sql.CallableStatement;
import java.sql.Clob;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;


import oracle.sql.CLOB;

import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.TypeHandler;

public class OracleClobTypeHandler implements TypeHandler<Object> {


    @Override
    public Object getResult(ResultSet arg0, String arg1) throws SQLException {
        Clob clob = (Clob)arg0.getClob(arg1);
        
        return (clob == null || clob.length() == 0) ? null : clob.getSubString(
                (long) 1, (int) clob.length());
    }


    @Override
    public Object getResult(CallableStatement arg0, int arg1)
            throws SQLException {
        return null;
    }

    @Override
    public void setParameter(PreparedStatement arg0, int arg1, Object arg2,JdbcType arg3) throws SQLException {
        
        weblogic.jdbc.rmi.internal.Clob clob = (weblogic.jdbc.rmi.internal.Clob) CLOB.empty_lob();
        clob.setString(1, (String) arg2);
        
        arg0.setClob(arg1, clob);
    }
}


========================================================================================================
引用参考:http://www.blogjava.net/SpartaYew/archive/2011/05/18/350480.html

目前,笔者见到的有三种处理CLOB型ResultSet的方法:
1、Java原生ResultSet,通常的代码为:  oracle.sql.CLOB clob = ((OracleResultSet) rss).getCLOB(1);
2、Tomcat处理CLOB型ResultSet:须将lib下的classes12.jar(oracle包)删除,但程序不需要改动。
3、通过Weblogic的DataSource获得的连接池,可采用如下代码:
   weblogic.jdbc.vendor.oracle.OracleThinClob clob = (weblogic.jdbc.vendor.oracle.OracleThinClob)rss.getClob(1);
   当然,要获得weblogic.jdbc.vendor.oracle.OracleThinClob接口还必须将D:\bea812\weblogic81\server\lib下的weblogic.jar
   拷贝到项目的E:\eclipse3.4.2\workspace\sykf\webapp\WEB-INF\lib下,才能正常使用。

鉴于本项目使用Weblogic做应用服务器,并且需要充分利用Weblogic的连接池建立的数据库连接,因此,笔者采用第三种方式来解决这个问题,也就是说将
D:\bea812\weblogic81\server\lib下的weblogic.jar拷贝到项目的E:\eclipse3.4.2\workspace\sykf\webapp\WEB-INF\lib下。

四、先为weblogic.jar减减肥吧

   要知道,从D:\bea812\weblogic81\server\lib下的weblogic.jar获得的该jar容量是非常大的,达36M之多, 这么大的jar包放到项目lib下有些笨拙,这个不要紧,可以对之进行减肥,将里面不需要的包删除掉就可以了,具体步骤如下:
  1)、解压该jar包,成为一个文件夹。
  2)、将里面除jdbc之外的包全部删除。
  3)、重新压缩成jar包。

  笔者通过上述处理之后,成功将36M体积的Weblogic.jar减肥为713K。

  在这里可能有读者会有如下疑问:
 
  你的lib下有weblogic.jar包,并且Weblogic下也有weblogic.jar包,并且两个jar中包含的jdbc.vendor.oracle.OracleThinclob相同,两者不会冲突吗?
  这个不必担心,因为包名类名虽然都相同,即使jvm也没法区分,那JVM在处理时就只有第一个包被引入(在classpath路径下排在前面的包),
  第二个包会在classloader加载类时判断重复而忽略。

© 著作权归作者所有

共有 人打赏支持
粉丝 0
博文 8
码字总数 1223
作品 0
佛山
weblogic10_windows下优化配置实例

优化说明: 一、Weblogic服务程序设置: 1、设置JDK内存: 修改weblogicuserprojectsdomainsbasedomainbin下的setDomainEnv.cmd文件: 修改前: if"%JAVA_VENDOR%"=="Sun" ( set WLSMEMARGS_...

jeffsui
2014/02/11
0
0
WebLogic时区与系统不一致的调整方式

我使用的WebLogic版本为9,运行环境为Windows7,WebLogic启动后发现控制台以及项目日志中的时间与实际系统的时间相差8小时,控制台显示的时区为GMT,于是考虑调整WebLogic的时区,查询WebLo...

benbenming
2011/07/12
0
0
weblogic DataSource 配置注意事项 .

weblogic 创建datasource时,配置注意事项,记录一下weblogic 的doc。 事务选项 使用管理控制台配置 JDBC 数据源时,WebLogic Server 会根据 JDBC 驱动程序的类型自动选择特定的事务选项: ...

pczhangtl
2013/11/22
0
0
weblogic debug配置

1.1. 软件环境 Eclipse 3.1 Weblogic 8.1 1.2. 工作原理 远程调试就是允许利用 java tools 里面的jdb 程序连接远程的JAVA虚拟机,进行远程debug ,同时远程的虚拟机启动时候需要开启 debug ...

ianLi
2012/11/02
0
0
关于WebLogic下应用使用URL.openConnection获取连接返回 HttpsURLConnection与SOAPHttpsURLConnection的问题

在部署微信公众号项目时,在本地TOMCAT测试通过后部署到WEBLOGIC上。抛出了weblogic.net.http.SOAPHttpsURLConnection cannot be cast to javax.net.ssl.HttpsURLConnection这样的错误。这段...

哥本哈根的小哥
05/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Nginx防盗链、访问控制、Nginx解析PHP相关配置、Nginx代理

Nginx防盗链 在配置文件里写入以下内容: 用curl测试 访问控制 Nginx限制某些IP不能访问或者只允许某些IP访问。 配置文件写入如下内容: allow 表示允许访问的IP,deny限制访问的IP。 匹配正...

黄昏残影
11分钟前
0
0
自己动手实现RPC服务调用框架

转载 TCP的RPC 引言 本文利用java自带的socket编程实现了一个简单的rpc调用框架,由两个工程组成分别名为battercake-provider(服务提供者)、battercake-consumer(服务调用者)。 设计思路...

雨中漫步的鱼
14分钟前
0
0
Centos6.x安装之后的9件事

Centos6.x安装之后的9件事 这些不是必须都做的,只不过是我个人的习惯,在此记录一下。 1.修改yum源到国内 CentOS系统更换软件安装源 备份你的原镜像文件,以免出错后可以恢复。 mv /etc/yu...

叶云轩
19分钟前
5
0
springboot2 使用jsp NoHandlerFoundException

开发图片上传功能,为验证测试功能是否正常,使用JSP编写表单提交进行测试 开发完成后,请求API提示如下异常: No mapping found for HTTP request with URI [/WEB-INF/jsp/avatar_upload.j...

showlike
25分钟前
0
0
springboot踩坑记--springboot正常启动但访问404

一 spring boot的启动类不能直接放在main(src.java.main)这个包下面,把它放在有包的里面就可以了。 二 正常启动了,但是我写了一个controller ,用的@RestController 注解去配置的controlle...

onedotdot
26分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部