最近同事在weblogic8.1下使用xmlbean,中间出现个问题,有个节点存储的内容也是个xml,输出的时候要求用CDATA括起来。
总结下,在weblogic的xmlbean中和apache的xmlbean有几种情况
1)weblogic的xmlbean和apache的xmlbean-1.x:
根据内容的大小和特殊字符的个数有个算法来决定是用CDATA扩起来还是转义
具体的判断在com.bea.xbean.store.Saver$TextSaver和org.apache.xmlbeans.impl.store.Saver$TextSaver里面
if ((this._lastEmitCch > 32) && (count > 5) && (count * 100 / this._lastEmitCch > 1)){
//用<![CDATA[
}else{
//转义
}
其中_lastEmitCch应该是内容的总数量,count是 '<'和'&'的数量
2)在apache的xmlbean-2.x中,估计是意识到了该部分的不可控性,添加了SAVE_CDATA_ENTITY_COUNT_THRESHOLD 、SAVE_CDATA_LENGTH_THRESHOLD 、LOAD_SAVE_CDATA_BOOKMARKS 来控制输出 具体见
http://xmlbeans.apache.org/docs/2.4.0/reference/index.html
判断条件也改成了
if (forceCData || (_lastEmitCch > _cdataLengthThreshold && count > _cdataEntityCountThreshold) )
{
//用<![CDATA[
}else{
//转义
}
自己想到的一种修改方式:patch Saver类,让他基本按照CDATA输出.
开始的时候尝试反编译Saver改完后再编译。但是各种内部类和jar的引用搞的焦头烂额,
最后采取patch bytecode的方式
原来的是
106: getfield #94; //Field _lastEmitCch:I
109: bipush 32
111: if_icmple 332
114: iload 4
116: iconst_5
117: if_icmple 332
120: iload 4
122: bipush 100
124: imul
125: aload_0
126: getfield #94; //Field _lastEmitCch:I
129: idiv
130: iconst_1
131: if_icmple 332
134: aload_0
135: getfield #99; //Field _buf:[C
138: iload_1
139: caload
最开始想吧131处的改成00,但是报错。。。最后决定改成if_icmple 134
然后把patch后的文件打进jar放到EAR里面。自己测试倒是通过了,但是不知道是否存在jar引用先后顺序的问题。。。。
分享到:
相关推荐
weblogic 8.1 plugin for Eclipse 3.4 weblogic 8.1 plugin for Eclipse 3.4 weblogic 8.1 plugin for Eclipse 3.4
Weblogic8.1使用说明Weblogic8.1使用说明Weblogic8.1使用说明
配置weblogic 8.1
weblogic8.1完整安装包,解压即可安装
Weblogic 8.1中如何配置JDBC
weblogic8.1版本_1 BEA WebLogic是用于开发、集成、部署和管理大型分布式Web应用、 网络应用和数据库应用的Java应用服务器。 这个版本很难找哦......
Weblogic 8.1安装手册pdf 详细介绍了Weblogic 8.1安装步骤。
weblogic 8.1部署应用程序(图解)
weblogic8.1配置说明,别人的共享一下,免费的啊,呵呵嗬嗬嗬嗬
很多初学者多不是很了解配置WEBLOGIC的详细要求,此文档是WEBLOGIC8.1详细安装及配置,演示文稿,希望能解决对WEBLOGIC的初步认识。
weblogic 8.1,9.2,10破解
weblogic8.1 JNDI ORACLE 配置 部署
word文档,Weblogic 8.1的安装与配置
weblogic8.1服务器性能参数优化
WebLogic Platform 8.1 whith sp3 WebLogic 8.1
Weblogic 8.1 +SP2破解版
weblogic 8.1基础知识--安装与设置
这是一个Weblogic8.1的应用部署的应用部署文档,里面详细介绍了部署步骤。图形文字结合说明,有需要的同学可以下载。
WebLogic8.1服务器证书安装配置指南.pdf
AIX下运行的weblogic8,weblogic8.1sp5补丁,修复该版本服务无故停止响应的问题