文档章节

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

 中国租女友网
发布于 2014/06/18 15:50
字数 698
阅读 207
收藏 0
点赞 0
评论 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
博文 7
码字总数 1223
作品 0
佛山
关于WebLogic下应用使用URL.openConnection获取连接返回 HttpsURLConnection与SOAPHttpsURLConnection的问题

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

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

WebLogic反序列化漏洞(CVE-2018-2628)漫谈

  漏洞简介   2018年4月18日,Oracle官方发布了4月份的安全补丁更新CPU(Critical Patch Update),更新中修复了一个高危的 WebLogic 反序列化漏洞CVE-2018-2628。攻击者可以在未授权的情...

FreeBuf ⋅ 04/26 ⋅ 0

webLogic JNDI连接池监控

我要做一个weblogic数据源的监控,监控当前连接池连接数量,最大连接数,超过某个阀值就发邮件或者短信报警。webloigc提供的后台只能看,没有报警功能,所以我想自己实现一个。现在可以获取到...

OSC_ZORO ⋅ 06/15 ⋅ 0

weblogic集群被管节点出现socket错误

weblogic 集群出现socket错误 启动出现错误 <span ><Nov 13, 2013 12:57:10 PM CST> <Error> <Cluster> <BEA-000109> <An error occurred while sending multicast message: java.io.IOExcep......

tututu_jiang ⋅ 06/15 ⋅ 0

Oracle搞砸了WebLogic高危漏洞补丁!黑客可接管服务器

Oracle搞砸了WebLogic高危漏洞补丁!黑客可接管服务器 Harries Blog™2018-04-3013 阅读 srchttphttpsjavaIOOracleJavarmi...

Harries Blog™ ⋅ 04/30 ⋅ 0

继Oracle之后,黑客瞄准了易受攻击的WebLogic服务器

黑客从 4 月 17 日之后开始,瞄准了 Oracle WebLogic 服务器的计算机。当时正值 Oracle 发布了季度重要补丁更新(CPU)的安全建议。 Oracle 发布了 CVE-2018-2628 漏洞补丁,和在 WebLogic 中...

周其 ⋅ 05/01 ⋅ 4

CVE-2018-2628 Weblogic反序列化POC重构详解

CVE-2018-2628 Weblogic反序列化POC重构详解 Harries Blog™2018-05-150 阅读 gitJavaCollectioncatCollectionsECS...

Harries Blog™ ⋅ 05/15 ⋅ 0

tomcat、weblogic、jboss的区别,容器的作用

一、tomcat Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,它是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及...

水墨如丹青 ⋅ 04/13 ⋅ 0

J2EE进阶(二十四)JBoss Web和 Tomcat的区别

J2EE进阶(二十四)JBoss Web和 Tomcat的区别 在Web2.0的浪潮中,各种页面技术和框架不断涌现,为服务器端的基础架构提出了更高的稳定性和可扩展性的要求。近年来,作为开源中间件的全球领导者...

sunhuaqiang1 ⋅ 05/27 ⋅ 0

bboss session v5.0.5.7 发布,session 共享与监控框架

bboss session v5.0.5.7发布 bboss session为 web 应用提供 session 共享和 session 监控功能。 功能特点 支持集群 session 共享 支持跨域跨应用 session 共享 提供强大的统一 session 管理监...

bboss ⋅ 05/01 ⋅ 6

没有更多内容

加载失败,请刷新页面

加载更多

下一页

SpringCloud 微服务 (六) 服务通信 RestTemplate

壹 通信的方式主要有两种,Http 和 RPC SpringCloud使用的是Http方式通信, Dubbo的通信方式是RPC 记录学习SpringCloud的restful方式: RestTemplate (本篇)、Feign 贰 RestTemplate 类似 Http...

___大侠 ⋅ 3分钟前 ⋅ 0

React创建组件的三种方式

1.无状态函数式组建 无状态函数式组件,也就是你无法使用State,也无法使用组件的生命周期方法,这就决定了函数组件都是展示性组件,接收Props,渲染DOM,而不关注其他逻辑。 无状态函数式组...

kimyeongnam ⋅ 10分钟前 ⋅ 0

react 判断实例类型

今天在写组件的时候想通过判断内部子元素不同而在父元素上应用不同的class,于是首先要解决的就是如何判断子元素的类型。 这里附上一个讲的很全面的文章: https://www.cnblogs.com/onepixel...

球球 ⋅ 17分钟前 ⋅ 0

Centos7备份数据到百度网盘

一、关于 有时候我们需要进行数据备份,如果能自动将数据备份到百度网盘,那将会非常方便。百度网盘有较大的存储空间,而且不怕数据丢失,安全可靠。下面简单的总结一下如何使用 bypy 实现百...

zctzl ⋅ 31分钟前 ⋅ 0

开启远程SSH

SSH默认没有开启账号密码登陆,需要再配置表中修改: vim /etc/ssh/sshd_configPermitRootLogin yes #是否可以使用root账户登陆PasswordAuthentication yes #是都开启密码登陆ser...

Kefy ⋅ 34分钟前 ⋅ 0

Zookeeper3.4.11+Hadoop2.7.6+Hbase2.0.0搭建分布式集群

有段时间没更新博客了,趁着最近有点时间,来完成之前关于集群部署方面的知识。今天主要讲一讲Zookeeper+Hadoop+Hbase分布式集群的搭建,在我前几篇的集群搭建的博客中已经分别讲过了Zookeep...

海岸线的曙光 ⋅ 41分钟前 ⋅ 0

js保留两位小数方法总结

本文是小编针对js保留两位小数这个大家经常遇到的经典问题整理了在各种情况下的函数写法以及遇到问题的分析,以下是全部内容: 一、我们首先从经典的“四舍五入”算法讲起 1、四舍五入的情况...

孟飞阳 ⋅ 59分钟前 ⋅ 0

python log

python log 处理方式 log_demo.py: 日志代码。 #! /usr/bin/env python# -*- coding: utf-8 -*-# __author__ = "Q1mi""""logging配置"""import osimport logging.config# 定义三种......

inidcard ⋅ 今天 ⋅ 0

mysql 中的信息数据库以及 shell 查询 sql

Information_schema 是 MySQL 自带的信息数据库,里面的“表”保存着服务器当前的实时信息。它提供了访问数据库元数据的方式。 什么是元数据呢?元数据是关于数据的数据,如数据库名或表名,...

blackfoxya ⋅ 今天 ⋅ 0

maven配置阿里云镜像享受飞的感觉

1.在maven目录下的conf/setting.xml中找到mirrors添加如下内容,对所有使用改maven打包的项目生效。 <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.al......

kalnkaya ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部