- 浏览: 695239 次
- 性别:
- 来自: 长沙
文章分类
- 全部博客 (364)
- quick start (57)
- bboss aop (43)
- bboss mvc (48)
- bboss persistent (96)
- bboss taglib (30)
- bboss event (10)
- bbossgroups (52)
- bboss (32)
- bboss会话共享 (17)
- bboss rpc (7)
- bboss 国际化 (5)
- bboss 序列化 (9)
- bboss cxf webservice (8)
- bboss hessian (3)
- bboss 安全认证SSO (15)
- bboss 工作流 (6)
- 平台 (18)
- bboss quartz (3)
- 杂谈 (5)
- 大数据 (1)
- bboss elastic (24)
- bboss http (1)
- bboss kafka (1)
- Elasticsearch Scroll和Slice Scroll查询API使用案例 (1)
最新评论
-
qianhao123:
...
采用gradle构建和发布bboss方法介绍 -
qianhao123:
[img][/img]
采用gradle构建和发布bboss方法介绍 -
yin_bp:
欢迎大家参与working
高性能elasticsearch ORM开发库使用介绍 -
qq641879434:
万分感谢
bboss 持久层sql xml配置文件编写和加载方法介绍 -
yin_bp:
qq641879434 写道怎么设置配置文件 可以查看执行的S ...
bboss 持久层sql xml配置文件编写和加载方法介绍
bboss 序列化功能详解,bboss序列化组件是bbossgroups框架体系中的又一个非常给力的功能构件,可以非常方便地实现对象到xml的相互转换功能,本文详细介绍bboss序列化功能的特点及使用方法。
1.Bboss 序列化功能组件及依赖的jar包
1.1 主要组件和注解
组件
org.frameworkset.soa.ObjectSerializable
ObjectSerializable组件提供了序列化和反序列化的主要api:
序列化api
反序列化api
注解
org.frameworkset.soa.annotation.ExcludeField
ExcludeField注解主要的作用就是用来过滤对象中不需要序列化的属性,目前只对对象属性起作用,后续可以加到get方法。ExcludeField注解的作用类似于java保留字transient的作用,bboss序列化组件同样也支持transient关键字,只要属性前面加了transient关键字,序列化时也会被忽略。ExcludeField用法如下:
1.2 依赖的jar包,可点击链接下载,如果地址无法访问,也可以点击每个jar文件上的连接从github下载
bboss-core.jar
cglib-nodep-2.2.jar
frameworkset-util.jar
log4j-1.2.16.jar
bboss-soa.jar
jakarta-oro-2.0.8.jar
2.Bboss 序列化功能特点
(1).支持高效的xml-bean相互转换(序列化和反序列化)
(2).支持各种数据类型的序列化和反序列化,支持文件的序列化和反序列化
(3).支持对象间各种关系的序列化和反序列化(对象恢复后能够恢复对象间的引用关系以及循环递归引用关系,例如树结构的对象关系,单向父子对象关系,双向父子对象关系)
(4).序列化时可以过滤以下类型属性:
transient
static
final
@Exclude注解过的属性
3.指定序列化过程中可以忽略的异常信息,以换行符分割
在配置文件/resources/org/frameworkset/soa/serialconf.xml的ignoreExceptions节点中进行设置:
默认忽略org.hibernate.LazyInitializationException异常
4.Bboss 序列化功能使用
本小节以一个简单的实例来说明如何通过bboss来实现组件序列化功能.
4.1 首先看简单对象序列化和反序列化操作
4.2 再看一个复杂对象数据结构的序列化和反序列化操作
4.3 再看一个文件对象的序列化和反序列化操作
更详细的实例请参考测试用例。
5.Bboss 序列化功能应用
bboss序列化功能目前已经被广泛应用于基于http/netty/mina/webservice/jms 等通讯协议的rpc框架中,性能表现良好。
参考文档:
bbossgroups 对象xml序列化/反序列化性能测试
bboss 序列化机制重大改进-支持复杂对象及对象之间关系序列化和恢复功能
为了验证hessian和bboss序列化功能的差异性特意做了个对比测试。
分别用bboss和hessian序列化和反序列化带有47K数据的对象实例,测试结果如下:
bboss:序列化生成数据大小48274byte,耗时:47毫秒
hessian:序列化生成数据大小47801byte,耗时:62毫秒
bboss 反序列化耗时:125毫秒
hessian 反序列化耗时:32毫秒
从测试结果来看,bboss序列化速度比hessian稍快,反序化比hessian慢4倍,序列化产生的数据大小比hessian略大一些。
hessian的版本是4.0.7,bboss 的版本是4.0.7。
测试代码附下:
1.Bboss 序列化功能组件及依赖的jar包
1.1 主要组件和注解
组件
org.frameworkset.soa.ObjectSerializable
ObjectSerializable组件提供了序列化和反序列化的主要api:
序列化api
//将对象obj序列化成xml串并返回该串 public final static String toXML(Object obj) //将对象obj序列化成xml串,并将该串写入到Writer对象out中 public final static void toXML(Object obj, Writer out)
反序列化api
//将beanxml参数对应的xml串转换为beantype类型的对象并返回该对象,采用泛型方式 public static <T> T toBean(String beanxml, Class<T> beantype) //将instream参数对应的xml字符流转换为beantype类型的对象并返回该对象,采用泛型方式 public static <T> T toBean(InputStream instream, Class<T> beantype)
注解
org.frameworkset.soa.annotation.ExcludeField
ExcludeField注解主要的作用就是用来过滤对象中不需要序列化的属性,目前只对对象属性起作用,后续可以加到get方法。ExcludeField注解的作用类似于java保留字transient的作用,bboss序列化组件同样也支持transient关键字,只要属性前面加了transient关键字,序列化时也会被忽略。ExcludeField用法如下:
@ExcludeField private String excludeField
1.2 依赖的jar包,可点击链接下载,如果地址无法访问,也可以点击每个jar文件上的连接从github下载
bboss-core.jar
cglib-nodep-2.2.jar
frameworkset-util.jar
log4j-1.2.16.jar
bboss-soa.jar
jakarta-oro-2.0.8.jar
2.Bboss 序列化功能特点
(1).支持高效的xml-bean相互转换(序列化和反序列化)
(2).支持各种数据类型的序列化和反序列化,支持文件的序列化和反序列化
(3).支持对象间各种关系的序列化和反序列化(对象恢复后能够恢复对象间的引用关系以及循环递归引用关系,例如树结构的对象关系,单向父子对象关系,双向父子对象关系)
(4).序列化时可以过滤以下类型属性:
transient
static
final
@Exclude注解过的属性
3.指定序列化过程中可以忽略的异常信息,以换行符分割
在配置文件/resources/org/frameworkset/soa/serialconf.xml的ignoreExceptions节点中进行设置:
<property name="ignoreExceptions"> <![CDATA[ org.frameworkset.soa.IgnoreException1 org.frameworkset.soa.IgnoreException2 ]]> </property>
默认忽略org.hibernate.LazyInitializationException异常
4.Bboss 序列化功能使用
本小节以一个简单的实例来说明如何通过bboss来实现组件序列化功能.
4.1 首先看简单对象序列化和反序列化操作
//构建和初始化要序列化的简单对象实例 TransientFieldBean transientFieldBean = new TransientFieldBean("onlyField"); transientFieldBean.setExcludeField("exccc"); transientFieldBean.setStaticFiled("staticFiled"); transientFieldBean.setTransientField("transientField"); //对象序列化 String xml = ObjectSerializable.toXML(transientFieldBean); //反序列化 TransientFieldBean transientFieldBean_new = ObjectSerializable.toBean(xml, TransientFieldBean.class);
4.2 再看一个复杂对象数据结构的序列化和反序列化操作
//构建和初始化要序列化的复杂对象实例,对象test1引用对象test2和test3,test2引 //用test1,对象test3引用对象test2,这样就构造了一个具有相互引用的关系网, //bboss序列化组件可以非常方便地对这种结构的对象进行序列化和反序列化,而且能够 //很好地保持这种复杂的引用关系 Test1 test1 = new Test1(); Test2 test2 = new Test2(); Test3 test3 = new Test3(); test2.setTest1(test1); test1.setTest2(test2); test1.setTest3(test3); test3.setTest2(test2); //序列化test1对象 String ss = ObjectSerializable.toXML(test1); //反序列化 Test1 test1_ = (Test1)ObjectSerializable.toBean(ss,Test1.class);
4.3 再看一个文件对象的序列化和反序列化操作
//构造一个带文件属性的对象joe File fileData = new File("D:\\workspace\\bbossgroups-3.2\\bboss-soa\\test\\org\\frameworkset\\soa\\testxstream.xml"); FilePerson joe = new FilePerson(); joe.setFileData(fileData); //序列化对象joe String xml = ObjectSerializable.toXML(joe); //反序列化 FilePerson person = ObjectSerializable.toBean( xml, FilePerson.class);
更详细的实例请参考测试用例。
5.Bboss 序列化功能应用
bboss序列化功能目前已经被广泛应用于基于http/netty/mina/webservice/jms 等通讯协议的rpc框架中,性能表现良好。
参考文档:
bbossgroups 对象xml序列化/反序列化性能测试
bboss 序列化机制重大改进-支持复杂对象及对象之间关系序列化和恢复功能
为了验证hessian和bboss序列化功能的差异性特意做了个对比测试。
分别用bboss和hessian序列化和反序列化带有47K数据的对象实例,测试结果如下:
bboss:序列化生成数据大小48274byte,耗时:47毫秒
hessian:序列化生成数据大小47801byte,耗时:62毫秒
bboss 反序列化耗时:125毫秒
hessian 反序列化耗时:32毫秒
从测试结果来看,bboss序列化速度比hessian稍快,反序化比hessian慢4倍,序列化产生的数据大小比hessian略大一些。
hessian的版本是4.0.7,bboss 的版本是4.0.7。
测试代码附下:
@Test public void testHessianSerializable() throws Exception { Test1 test1 = new Test1(); Test2 test2 = new Test2(); Test3 test3 = new Test3(); test2.setTest1(test1); test1.setTest2(test2); test1.setTest3(test3); test3.setTest2(test2); try { String bigcontent = FileUtil.getFileContent(new File("D:\\workspace\\bbossgroups-3.5\\bboss-soa\\test\\org\\frameworkset\\soa\\testxstream.xml"), "GBK");//testxstream.xml是一个47K大小的xml文件 test1.setXmlvalue(bigcontent); long s = System.currentTimeMillis(); String xml = ObjectSerializable.toXML(test1);//bboss 序列化 long e = System.currentTimeMillis(); System.out.println("bboss:"+xml.getBytes().length + ",times:" + (e - s)); s = System.currentTimeMillis(); Test1 test1_ = (Test1)ObjectSerializable.toBean(xml,Test1.class);//bboss 反序列化 e = System.currentTimeMillis(); System.out.println("bboss de times:" + (e - s)); s = System.currentTimeMillis();//hessian序列化 ByteArrayOutputStream os = new ByteArrayOutputStream(); HessianOutput ho = new HessianOutput(os); ho.writeObject(test1); byte[] cs = os.toByteArray(); e = System.currentTimeMillis(); System.out.println("hessian:"+cs.length+ ",times:" + (e - s)); s = System.currentTimeMillis();//hessian反序列化 ByteArrayInputStream is = new ByteArrayInputStream(cs); HessianInput hi = new HessianInput(is); test1_ = (Test1) hi.readObject(); e = System.currentTimeMillis(); System.out.println("hessian de times:" + (e - s)); //测试用例结束 } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }
发表评论
-
bboss开发、模块工程目录结构及功能说明
2014-10-15 19:46 4874基于bboss开发项目说明 ... -
bboss序列化cglib代理对象方法介绍
2014-06-22 15:14 1160本文介绍bboss序列化cglib代理对象方法。经过cglib ... -
bboss自定义类对象序列化机制介绍
2014-05-26 23:32 1471bboss自定义类对象序列 ... -
bboss session共享时序列化存储jasperreports报表对象JasperPrint方法
2014-05-11 11:55 1108bboss session共享时序列化存储jasperrepo ... -
扩展Activiti-5.12轻松实现流程节点间自由跳转和任意驳回/撤回
2013-05-28 01:33 17955由于项目需要,最近对开源工作流引擎Activiti-5.12的 ... -
bboss离线开发文档下载
2013-05-14 18:08 1862bboss离线开发文档下载 为了便于bboss开发人员离线查找 ... -
bboss 3.6发布,丰富的功能扩展和改进
2012-10-07 09:50 2036bboss 3.6 (官网下载,sf下载)发布了,新版本相比之 ... -
bboss持久层事务管理组件TransactionManager增加两个release方法
2012-08-25 11:56 1555bboss持久层事务管理组件TransactionManage ... -
解决cxf+bboss发布的webservice缺少<wsdl:types>和<wsdl:message>标签的问题
2012-06-19 10:11 1792cxf+bboss发布webservice服务 ... -
Bboss国际化实践PPT
2012-06-10 12:52 1378Bboss国际化实践PPT,点击链接即可下载: Bboss国际 ... -
bboss mvc文件上传下载新增功能详解
2012-05-16 22:35 1649bboss mvc文件上传下载新增功能详解 1.概述 最近对 ... -
bboss mvc结合jsonp实现跨站跨域应用间通讯功能介绍
2012-05-16 14:12 1846本文介绍bboss mvc结合jsonp实现跨站跨域应用间通讯 ... -
bboss mvc 通过jsonp实现跨站跨域远程访问
2012-05-14 22:48 0bboss mvc 通过jsonp实现跨站跨域远程访问 htt ... -
bboss国际化功能简介
2012-05-09 08:59 1256借助bboss国际化功能,我们可以非常方便快捷地实现系统 ... -
开源工作流引擎activiti与bboss整合使用方法浅析
2012-05-01 11:35 5224本文介绍开源工作流引擎activiti与bboss ioc框架 ... -
bboss持久层事务管理组件托管第三方持久层框架(mybatis等)事务功能介绍
2012-04-15 21:39 1965bboss持久层事务管理组件托管第三方持久层框架(mybati ... -
bboss 持久层sql语句中一维/多维数组类型变量、list变量、map变量、bean对象变量使用说明
2012-04-07 13:17 1790本文介绍bboss 持久层sql语句中一维/多维数组类型变量、 ... -
bboss 4.10.7及更低版本ant构建方法
2012-03-23 22:54 6030本文适用bboss 4.10.7及更低版本,4.10.8及后续 ... -
bboss 将内容为GBK编码文件转UTF-8工具介绍
2012-03-23 15:53 1691bboss 将内容为GBK编码文件转UTF-8工具介绍 bb ... -
bboss 持久层数据库信息加密功能介绍
2012-03-15 10:39 1271bboss 持久层数据库信息加密插件功能介绍,适用于3.6及后 ...
相关推荐
在本文中,我们将深入探讨Bboss和Xstream两个序列化和反序列化库在性能方面的差异。这两个库在Java开发中广泛用于将对象转换为XML格式,以便于存储、传输或持久化。以下是对这两个库的详细分析。 首先,Bboss和...
【Bboss国际化实践】主要涉及了软件系统的全球化适应性改造,以便支持多语言环境。以下是对这个主题的详细解析: 1. **界面元素国际化**: - 界面文字:所有用户可见的文字都需要进行翻译,确保不同语言环境下的...
bboss会话共享通过为应用提供统一的会话管理功能,保证了即使用户被切换到其他节点,也能够继续访问之前保存的会话数据。 其次,bboss会话共享支持跨域和跨应用的会话共享,并能实现单点登录(SSO)功能。单点登录...
其流批一体化的设计理念、丰富多样的数据处理功能以及良好的社区支持,使其在数据处理领域具有很高的实用价值。通过深入学习和使用bboss-datatran,用户可以提升数据处理效率,更好地挖掘数据的价值。
通过阅读`SYSAuthenticateFilter.java`的源码,我们可以深入了解BBoss框架如何实现这些功能,并学习如何自定义和扩展安全认证过滤器,以满足特定的应用场景需求。源码分析有助于我们更好地理解和控制Web应用的安全...
单集群演示功能测试用例,spring boot配置项以spring.elasticsearch.bboss开头 对应的配置文件为application.properties文件 多集群测试用例:eshelloword-spring-boot-starter\src\test\java\org\bboss\...
4. **AOP(面向切面编程)**:BBoss MVCDemo支持AOP,可以实现如事务管理、日志记录、权限控制等功能,提高代码的复用性和可维护性。 5. **国际化与本地化**:框架内置了国际化和本地化支持,使得应用可以根据用户...
1. **组件化开发**:BBoss支持模块化和组件化的开发模式,允许开发者根据项目需求选择必要的功能组件,避免了传统框架中“大而全”的问题,降低了系统的复杂度。 2. **数据库操作**:BBoss提供了便捷的数据访问层...
bboss-datatran 由 bboss 开源的数据采集&流批一体化工具,提供数据采集、数据清洗转换处理和数据入库以及数据指标统计计算流批一体化处理功能。 同时也是一个高性能Elasticsearch orm 客户端,100%兼容es各个版本 ...
bboss框架集成了AOP/iOC、MVC、持久化标签库、RPC、事件处理、Bean-XML序列化等多种功能。本项目基于bboss框架构建了数据采集ETL工具、流批一体化Stream工具、Elasticsearch客户端工具和WebSession共享框架等应用。
2. **插入数据**: 将业务数据插入到索引中,BBoss 提供了批量插入功能,可以高效处理大量数据。 3. **查询数据**: 构建查询条件,通过 BBoss API 发送请求并解析返回结果。 4. **更新和删除**: 更新已存在的文档,...
通常,这些示例会展示如何初始化bboss客户端,如何构造和执行DSL查询,以及如何处理返回结果。 ```java // 初始化bboss客户端 ElasticsearchEntityMapping mapping = new ElasticsearchEntityMapping("my_index...
springboot集成ElasticsearchBboss调用Elasticsearch的案例分享
bbosssession的架构及其特点,如跨容器支持、灵活可扩展的序列化机制、基于分布式缓存的实现,使得它能够在集群环境中实现高性能和高可用的会话管理。而其在部署和集成方面的便利性,则使得开发者能更快速地将其应用...
3. `bboss-util-5.5.0.jar`和`bboss-persistent-5.5.0.jar`:这是BBoss框架的核心组件,提供了许多实用工具类和持久化操作支持,如数据库连接、事务管理等,为Elasticsearch的数据导入提供底层支持。 4. `...
【bboss-db-elasticsearch-tool-master_java_】是一个Java ORM(对象关系映射)框架,它在功能上超越了MyBatis,提供了对多种数据库的广泛支持,包括MySQL、Oracle、PostgreSQL、SQLServer、DB2、DM以及MongoDB。...
本bboss-datatran项目基于Java开发,包含591个文件,包括Java源代码、...系统实现了数据采集、数据清洗转换处理、数据入库以及数据指标统计计算的流批一体化处理功能,界面友好,功能完善,适合用于数据采集与处理。
官方版本,亲测可用