我在Oracle 11G(11.1)中有一个表,它有一个包含XML文档的BLOB列。

XML文档已使用Java程序写入表中,并已使用java.util.zip平减器进行序列化和压缩。

有没有简单的方法使用SQL或PLSQL来提取此文档以反转创建BLOB列以取回原始XML文档的过程?

我从Web应用程序中识别出一段Java,它读取类似于下面代码的列,但出于支持目的,希望能够从后端访问列数据。

private IntegrationStagingDataBean fromObjectToBean(StagedMessage message) throws ServerException {

IntegrationStagingDataBean bean = new IntegrationStagingDataBean();

bean.setBusinessId(message.getBusinessId());

bean.setBusinessType(message.getBusinessType());

bean.setCreateTime(message.getCreateTime());

bean.setDeleted(message.hasBeenDeleted() ? "Y" : "N");

bean.setErrorMessage(message.getErrorMessage());

bean.setId(message.getId());

bean.setStoreId(message.getStoreId());

bean.setMessageDirection(message.getMessageDirection().getDbCode());

bean.setMessageFamily(message.getMessageFamily().getDbCode());

bean.setMessageType(message.getMessageType().getDbCode());

bean.setProcessed(message.hasBeenProcessed() ? "Y" : "N");

bean.setRetryCount(message.getRetryCount());

bean.setUpdateTime(message.getUpdateTime());

try {

bean.setSerializedDeo(ObjectUtils.toByteArray(new CompressedObject(message.getDeo())));

} catch (IOException ioex) {

throw new ServerException("Problem setting compressed serialized object", ioex);

}

return bean;

}

private StagedMessage fromBeanToObject(IntegrationStagingDataBean bean) throws ServerException {

DataExchangeObject deo = null;

Blob blob = (Blob) bean.getSerializedDeo();

try {

CompressedObject compressedObject = (CompressedObject) new

ObjectInputStream(blob.getBinaryStream()).readObject();

deo = (DataExchangeObject) compressedObject.recoverObject();

} catch (Exception e) {

throw new ServerException("Couldn't uncompress/deserialize DEO from BLOB", e);

}++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++

并发现以下附加功能遍布于少数几个软件包中,这些软件包指示它使用java.util.zip。*中的java函数deflater;

公共CompressedObject(Object对象)

抛出IOException

{

dataToSend = null;

如果(object!= null)

dataToSend = ObjectUtils.toCompressedByteArray(object);

}

public static final byte[] toCompressedByteArray(Object o)

throws IOException

{

return compressByteArray(toByteArray(o));

}

public static final byte[] compressByteArray(byte input[])

{

Deflater compressor = new Deflater(9);

compressor.setInput(input);

compressor.finish();

ByteArrayOutputStream bos = new ByteArrayOutputStream(input.length);

byte buf[] = new byte[1024];

int count;

for(; !compressor.finished(); bos.write(buf, 0, count))

count = compressor.deflate(buf);

try

{

bos.close();

}

catch(IOException e) { }

return bos.toByteArray();

}

public static final byte[] decompressByteArray(byte arr[])

{

Inflater decompressor = new Inflater();

decompressor.setInput(arr);

ByteArrayOutputStream bos = new ByteArrayOutputStream(arr.length);

byte buf[] = new byte[1024];

while(!decompressor.finished())

try

{

int count = decompressor.inflate(buf);

bos.write(buf, 0, count);

}

catch(DataFormatException e) { }

try

{

bos.close();

}

catch(IOException e) { }

return bos.toByteArray();

}提前致谢。

java blob压缩_如何从Oracle中用Java压缩的BLOB列中提取XML文档相关推荐

  1. java xml 合并_Java中合并XML文档的设计与实现

    为了读写XML文件,需要导入如下JAVA包,"//"后为注释说明,笔者的环境是JDK1.3.1,在JDK 1.4.0中测试也通过. Import java.io. *; //Jav ...

  2. java 关闭虚拟机_如何使用Oracle VirtualBox Java API关闭虚拟机?

    我学习使用VirtualBox Java API,但文档并不好. 我的代码: VirtualBoxManager virtualBoxManager = VirtualBoxManager.creat ...

  3. springboot java获取版本号_深入实践Spring Boot 实战篇,大佬整理出的PDF文档

    如何使用Spring Boot 本文章将会详细介绍如何使用Spring Boot.它覆盖了构建系统,自动配置和运行/部署选项等主题.我们也覆盖了一些Spring Boot最佳实践.尽管Spring B ...

  4. java xml 合并_Java中合并XML文档的合并

    Private Boolean dupliate (Document doc_dup, Element father, Element son) throws Exception { Boolean ...

  5. java解析xml工具类_通过dom4j解析XML字符串XMLDocUtil工具类转换为XML文档及获取指定根节点及指定节点路径内容代码示例...

    一.前言 通过dom4j解析XML文档的XMLDocUtil工具类,进行解析xml字符串为Document文档对象.获取根节点元素路径内容getRootElement.获取唯一路径节点的值getSin ...

  6. java 复杂网络分析_基于复杂网络的Java程序分析工具设计与实现思路浅谈

    基于复杂网络的Java程序分析工具设计与 实现思路浅谈 摘要:近年来,随着科学技术的进步,计算机技术发展速度的加快,使得软件价值也逐步提高,不管是软件系统的应用领域,还是其规模均获得了相应的扩大,且软 ...

  7. Dom4j解析器_解析xml文档

    为什么80%的码农都做不了架构师?>>>    目录     1.Dom4J是什么     2.使用dom4j解析xml     3.使用dom4j查询xml     4.使用dom ...

  8. java计算机毕业设计web智慧医疗平台设计与实现源码+mysql数据库+系统+lw文档+部署

    java计算机毕业设计web智慧医疗平台设计与实现源码+mysql数据库+系统+lw文档+部署 java计算机毕业设计web智慧医疗平台设计与实现源码+mysql数据库+系统+lw文档+部署 本源码技 ...

  9. java计算机毕业设计智慧校园学生选宿系统源码+mysql数据库+系统+部署+lw文档

    java计算机毕业设计智慧校园学生选宿系统源码+mysql数据库+系统+部署+lw文档 java计算机毕业设计智慧校园学生选宿系统源码+mysql数据库+系统+部署+lw文档 本源码技术栈: 项目架构 ...

最新文章

  1. 先来先服务算法代码_程序员算法与数据结构基础中的基础,栈与递归
  2. 学python爬虫用win电脑还是mac?
  3. Mysql循环语句,死循环解决办法
  4. 《金色梦乡》金句摘抄(三)
  5. 微信公众平台无法使用支付宝收付款的解决方案
  6. 【收藏】C# WinForm开发系列 - DataGridView 使用方法集锦 - 宁波.Net技术讨论区
  7. android屏幕适配流程,Android屏幕适配姿势
  8. 机器学习基石笔记-Lecture 14 Regularization
  9. web在session设置的账户用户名显示为空_海蜘蛛路由Web认证怎么设置 海蜘蛛路由Web认证方法【介绍】...
  10. PAIP.MYSQL数据库比较VC313.TXT
  11. 动漫头像1000张萌妹子图片,可以做高清头像壁纸
  12. 基于医院信息管理系统案例的软件构造分析
  13. 3ds Max中Vray分布式渲染
  14. FdSanitizer 简介
  15. 巾帼亮相申城,群英共筑梦想
  16. 小数输出最简分数c语言,小数化成最简式分数
  17. 高速公路交警的经验之谈[转自QQ群]
  18. 【2094. 找出 3 位偶数】
  19. 怎样缓解灾难性遗忘?持续学习最新综述三篇
  20. Android | 说说Presentation

热门文章

  1. JS数据结构与算法_链表
  2. kubernetes离线一键安装教程
  3. Python TVTK 标量数据可视化与矢量数据可视化,空间轮廓线可视化
  4. 上周上线碰见的ORA-00054错误回放
  5. Forbidden Attack:7万台web服务器陷入被攻击的险境
  6. PyQt的Layout的比例化分块。
  7. 迷茫与飞跃:9月开始,明确了研究方向,功力提升明显,成绩比较显著
  8. 查看Windows服务器的CPU详细信息
  9. 众方网络电话VOIP FREEGO EIS系统命令
  10. linux安装并管理mysql数据库