`

浅谈 bbossgroups 对象xml序列化技术

阅读更多
本文介绍bbossgroups 中的对象xml序列化技术,涵盖基础数据类型、复杂对象、异常对象、文件对象、二进制数组、容器对象(List,Map,Set,Array)以及各种类型的组合结构,其特点是api简单,转换效率高,生成的xml简洁易懂,可读性好,可以通过aop框架组件管理容器直接加载xml串获取其中的对象。切入正题。


目 录 [ - ]
    1.对象xml序列化技术实战策略
    2.对象xml序列化组件及接口
    3.对象xml序列化技术实例
   

1.对象xml序列化技术实战策略
对象xml序列化技术实战策略
1.1.从附件中下载本文涉及的实例eclipse工程xmlserializable.zip
http://dl.iteye.com/topics/download/d534eae3-c4c2-3afd-8405-30befd4acfd8
1.2.将xmlserializable.zip 解压后将工程导入eclipse开发环境
1.3.执行测试用例,即可查看本文中涉及功能的实际效果
/xmlserializable/test/org/frameworkset/soa/SOAApplicationContextTest.java

2.对象xml序列化组件及接口
2.1.对象xml序列化组件
org.frameworkset.soa.ObjectSerializable
2.2.对象xml序列化接口
ArrayBean bean1 = new ArrayBean();
String xmlcontent = ObjectSerializable.convertBeanObjectToXML("beanname",beanObject ,ArrayBean.class);
2.3.xml反序列化接口
ArrayBean bean1 = ObjectSerializable.convertXMLToBeanObject("beanname",xmlcontent,ArrayBean.class);

3.对象xml序列化技术实例
对象xml序列化技术非常简单,本实例展示了以下功能:
a.如何将包含文件和异常的对象序列化成xml串,然后又从xml串中恢复这些对象
b.如何将List对像及内部的对象序列化成xml串,然后又从xml串中恢复这些对象

需要特别说明一点的是,文件对象的序列化,我们直接将文件对象对应的文件内容以二进制流的方式序列化到xml串中,反序列化时将文件的二进制流保存在一个临时文件对象中,用户可以很方便地访问文件的内容(后续可以可虑通过注解指定要存放的临时文件的目录,现在直接采用了os默认的临时目录)。

依赖的bboss框架包请及时更新新版本



分享到:
评论
3 楼 yin_bp 2011-06-29  
ainidehsj 写道
学习一下。

有什么问题,多交流,有助于bbossgroups的完善。
2 楼 ainidehsj 2011-06-28  
学习一下。
1 楼 yin_bp 2011-06-27  
3.1.对象xml序列化技术实例类

  
 /* 
     *  Copyright 2008-2010 biaoping.yin 
     * 
     *  Licensed under the Apache License, Version 2.0 (the "License"); 
     *  you may not use this file except in compliance with the License. 
     *  You may obtain a copy of the License at 
     * 
     *      http://www.apache.org/licenses/LICENSE-2.0 
     * 
     *  Unless required by applicable law or agreed to in writing, software 
     *  distributed under the License is distributed on an "AS IS" BASIS, 
     *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
     *  See the License for the specific language governing permissions and 
     *  limitations under the License. 
     */  
    package org.frameworkset.soa;  
      
      
      
    import java.beans.IntrospectionException;  
    import java.util.ArrayList;  
    import java.util.List;  
      
    import org.junit.Test;  
      
    import com.frameworkset.util.ValueObjectUtil;  
      
      
    /** 
     * <p>Title: SOAApplicationContext.java</p>  
     * <p>Description: </p> 
     * <p>bboss workgroup</p> 
     * <p>Copyright (c) 2008</p> 
     * @Date 2011-5-9 下午06:12:52 
     * @author biaoping.yin 
     * @version 1.0 
     */  
    public class SOAApplicationContextTest {  
        @Test  
        public void bytearraybeantoxml() throws NumberFormatException, IllegalArgumentException, IntrospectionException  
        {  
            ArrayBean bean = new ArrayBean();  
            Exception e = new Exception("异常发生。");  
            bean.setE(e);  
              
            String content = "<?xml version=\"1.0\" encoding=\"gbk\"?>" +  
            "<esb>"+  
                "<call>"+  
                  
                "<!-- 调度中心需要的数据开始 -->"+  
                      
                    "<property name=\"soamethodcall\" " +  
                        "class=\"org.frameworkset.soa.SOAMethodCall\" "+  
                        "f:requestor=\"requestor\" "+  
                        "f:requestid=\"1000000\" "+  
                        "f:password=\"requestpassword\" "+  
                        "f:encypt=\"encrypt\" "+  
                        "f:encyptalgorithem=\"algorithm\" "+  
                        "f:serviceid=\"hilaryserviceid\" "+  
                        "f:issynchronized=\"true\" >"+  
                        "<!-- 调度中心需要的数据结束 -->"+  
                        "<!-- 调度中心提交给服务提供方的服务方法信息 -->"+  
                        "<property name=\"soamethodinfo\" class=\"org.frameworkset.soa.SOAMethodInfo\" " +  
                                                        "f:methodName=\"methodname\">"+  
                            "<property name=\"paramTypes\">"+  
                                "<array componentType=\"Class\">"+  
                                    "<property >String</property>"+  
                                    "<property >String</property>"+  
                                    "<property >String[]</property>"+  
                                "</array>"+  
                            "</property>" +  
                            "<property name=\"params\">"+  
                                "<array componentType=\"object\">"+  
                                    "<property name=\"condition\">1=1</property>"+  
                                    "<property name=\"orderby\">order by ${A}</property>"+  
                                    "<property>"+  
                                    "   <array componentType=\"String\">"+  
                                        "<property>A</property>"+  
                                        "<property>B</property>"+  
                                        "</array>"+  
                                    "</property>"+  
                                "</array>"+  
                            "</property>" +  
                        "</property>" +  
                    "</property>"+  
                "</call>"+  
            "</esb>";  
            bean.setArrays(content.getBytes() );  
            String xmlcontent = ObjectSerializable.convertBeanObjectToXML("beanarray",bean, bean.getClass());  
            System.out.println(xmlcontent);  
            ArrayBean bean1 = ObjectSerializable.convertXMLToBeanObject("beanarray",xmlcontent,ArrayBean.class);  
            System.out.println(new String(bean1.getArrays()));  
            System.out.println(bean1.getE());  
              
        }  
          
        @Test  
        public void filebeantoxml() throws Exception  
        {  
            FileBean bean = new FileBean();  
              
            bean.setFile(ValueObjectUtil.getClassPathFile("org/frameworkset/soa/datasource-sql.xml"));  
            String xmlcontent = ObjectSerializable.convertBeanObjectToXML("beanfile",bean, bean.getClass());  
            System.out.println(xmlcontent);  
            FileBean bean1 = ObjectSerializable.convertXMLToBeanObject("beanfile",xmlcontent,FileBean.class);  
            System.out.println(ValueObjectUtil.getFileContent(bean1.getFile(),"UTF-8"));  
        }  
        @Test  
        public void beanstoxml() throws Exception  
        {  
            FileBean fbean = new FileBean();  
              
            fbean.setFile(ValueObjectUtil.getClassPathFile("org/frameworkset/soa/datasource-sql.xml"));  
            ArrayBean bean = new ArrayBean();  
            String content = "<?xml version=\"1.0\" encoding=\"gbk\"?>" +  
            "<esb>"+  
                "<call>"+  
                  
                "<!-- 调度中心需要的数据开始 -->"+  
                      
                    "<property name=\"soamethodcall\" " +  
                        "class=\"org.frameworkset.soa.SOAMethodCall\" "+  
                        "f:requestor=\"requestor\" "+  
                        "f:requestid=\"1000000\" "+  
                        "f:password=\"requestpassword\" "+  
                        "f:encypt=\"encrypt\" "+  
                        "f:encyptalgorithem=\"algorithm\" "+  
                        "f:serviceid=\"hilaryserviceid\" "+  
                        "f:issynchronized=\"true\" >"+  
                        "<!-- 调度中心需要的数据结束 -->"+  
                        "<!-- 调度中心提交给服务提供方的服务方法信息 -->"+  
                        "<property name=\"soamethodinfo\" class=\"org.frameworkset.soa.SOAMethodInfo\" " +  
                                                        "f:methodName=\"methodname\">"+  
                            "<property name=\"paramTypes\">"+  
                                "<array componentType=\"Class\">"+  
                                    "<property >String</property>"+  
                                    "<property >String</property>"+  
                                    "<property >String[]</property>"+  
                                "</array>"+  
                            "</property>" +  
                            "<property name=\"params\">"+  
                                "<array componentType=\"object\">"+  
                                    "<property name=\"condition\">1=1</property>"+  
                                    "<property name=\"orderby\">order by ${A}</property>"+  
                                    "<property>"+  
                                    "   <array componentType=\"String\">"+  
                                        "<property>A</property>"+  
                                        "<property>B</property>"+  
                                        "</array>"+  
                                    "</property>"+  
                                "</array>"+  
                            "</property>" +  
                        "</property>" +  
                    "</property>"+  
                "</call>"+  
            "</esb>";  
            bean.setArrays(content.getBytes() );  
            List beans = new ArrayList();  
            beans.add(fbean);  
            beans.add(bean);  
              
            String xmlcontent = ObjectSerializable.convertBeanObjectToXML("listObject",beans, List.class);  
            System.out.println(xmlcontent);  
              
            List copybeans = ObjectSerializable.convertXMLToBeanObject("listObject", xmlcontent, List.class);  
            System.out.println(copybeans.size());  
        }  
    }  




3.2.相关的对象类-ArrayBean

  
 /* 
     *  Copyright 2008-2010 biaoping.yin 
     * 
     *  Licensed under the Apache License, Version 2.0 (the "License"); 
     *  you may not use this file except in compliance with the License. 
     *  You may obtain a copy of the License at 
     * 
     *      http://www.apache.org/licenses/LICENSE-2.0 
     * 
     *  Unless required by applicable law or agreed to in writing, software 
     *  distributed under the License is distributed on an "AS IS" BASIS, 
     *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
     *  See the License for the specific language governing permissions and 
     *  limitations under the License. 
     */  
    package org.frameworkset.soa;  
      
    /** 
     * <p>Title: ArrayBean.java</p>  
     * <p>Description: </p> 
     * <p>bboss workgroup</p> 
     * <p>Copyright (c) 2008</p> 
     * @Date 2011-5-14 上午11:31:32 
     * @author biaoping.yin 
     * @version 1.0 
     */  
    public class ArrayBean {  
        private byte[] arrays;  
        private Exception e;  
      
        /** 
         * @return the arrays 
         */  
        public byte[] getArrays() {  
            return arrays;  
        }  
      
        /** 
         * @param arrays the arrays to set 
         */  
        public void setArrays(byte[] arrays) {  
            this.arrays = arrays;  
        }  
      
        /** 
         * @return the e 
         */  
        public Exception getE() {  
            return e;  
        }  
      
        /** 
         * @param e the e to set 
         */  
        public void setE(Exception e) {  
            this.e = e;  
        }  
          
      
    }  


3.3.相关的对象类-FileBean


  
 /* 
     *  Copyright 2008-2010 biaoping.yin 
     * 
     *  Licensed under the Apache License, Version 2.0 (the "License"); 
     *  you may not use this file except in compliance with the License. 
     *  You may obtain a copy of the License at 
     * 
     *      http://www.apache.org/licenses/LICENSE-2.0 
     * 
     *  Unless required by applicable law or agreed to in writing, software 
     *  distributed under the License is distributed on an "AS IS" BASIS, 
     *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
     *  See the License for the specific language governing permissions and 
     *  limitations under the License. 
     */  
    package org.frameworkset.soa;  
      
    import java.io.File;  
      
    /** 
     * <p>Title: FileBean.java</p>  
     * <p>Description: </p> 
     * <p>bboss workgroup</p> 
     * <p>Copyright (c) 2008</p> 
     * @Date 2011-5-14 上午11:32:24 
     * @author biaoping.yin 
     * @version 1.0 
     */  
    public class FileBean {  
        private File file;  
        
        /** 
         * @return the file 
         */  
        public File getFile() {  
            return file;  
        }  
      
        /** 
         * @param file the file to set 
         */  
        public void setFile(File file) {  
            this.file = file;  
        }  
    }  

相关推荐

    bbossgroups 开发系列文章之一 最佳实践

    消息源则用于国际化和本地化,ReloadableResourceBundleMessageSource允许在运行时重新加载消息资源。 接着,我们关注控制器配置。bboss MVC中的控制器是业务逻辑和视图之间的桥梁,通常由...

    bbossgroups 3.1SQLExecutor组件ap使用实例

    在Java开发中,bbossgroups 3.1框架提供了一个名为SQLExecutor的组件,用于简化数据库操作。这个组件提供了一种高效的批处理和单条SQL执行的方式,它基于Apache License 2.0开源,允许开发者在遵守相应条款的情况下...

    bbossgroups 3.0 培训教程

    1. **模块化设计**:bbossgroups 3.0 采用模块化设计,使得各个组件可以独立使用,增强了代码的复用性和可维护性。开发者可以根据项目需求选择相应的模块,降低系统的复杂度。 2. **高性能的消息队列**:...

    bbossgroups 3.0 发布,国内首款集

    ### bbossgroups 3.0 发布,国内首款集成多技术的企业级J2EE开发框架 #### 概述 近日,bbossgroups 3.0 正式发布,这款国内首款集AOP(面向切面编程)、MVC(模型-视图-控制器)、Persistent(持久化)、JSP ...

    Bbossgroups体系架构.ppt

    4. **国际化与主题管理**:Bbossgroups支持多语言环境,通过MessageResource实现国际化消息资源管理,而Theme机制则允许用户自定义界面主题,满足不同用户的个性化需求。 5. **RESTful架构**:Bboss支持RESTful风格...

    bbossgroups 3.1培训教程.ppt

    **bbossgroups 3.1培训教程** bbossgroups 3.1是一个企业级J2EE开发框架,自2005年以来不断发展和完善,旨在提供高效、稳定的开发工具和...随着不断的发展和更新,bbossgroups将持续为企业级应用提供强大的技术支持。

    基于Java和Shell的bboss session framework跨域集群节点会话共享与监控设计源码

    该框架包含222个文件,包括164个Java源文件、14个XML配置文件、6个Gradle构建文件、6个JAR包文件、6个属性文件等,旨在支持跨域应用集群节点的会话共享与监控,并提供示例站点http://session.bbossgroups.com/...

    2013年度中国优秀开源项目列表

    12. bboss:bbossgroups是首个集成AOP、MVC、持久层、JSP标签库、分布式RPC服务和序列化组件的JavaEE企业级开发框架。 13. BeeFramework:BeeFramework是iOS平台的快速开发框架,特点包括易学易用、组件丰富,提供...

    企业级J2EE开源框架bboss

    BBoss(全称为bbossgroups)是一个专为企业级J2EE应用设计的开源框架,它为Java开发者提供了一系列强大的工具和服务,以简化Web应用程序的开发过程。该框架旨在提高开发效率,降低维护成本,同时保持高度的灵活性和...

    bboss-elastic-tran:bboss 数据同步工具

    弹性Tran老板数据交换模块使用文档: : Bboss是一个很好的Elasticsearch Java Rest客户端。 它运行并访问像mybatis这样的... 首先将BBoss的maven依赖项添加到pom.xml中: &lt; dependency&gt; &lt; groupId&gt;com.bbossgroups.p

    bboss mvc 通过jsonp实现跨站跨域远程访问

    标题 "bboss mvc 通过jsonp实现跨站跨域远程访问" 涉及到的主要知识点是关于Web开发中的跨域通信技术,特别是利用JSONP(JSON with Padding)来解决AJAX请求时遇到的同源策略限制。在互联网应用中,浏览器的安全策略...

    java版地图源码-bboss-elasticsearch:最好的elasticsearch高级javarest客户端api-----bbos

    java版地图源码弹性搜索Bboss Bboss 是一个很好的 elasticsearch Java rest 客户端。 它以类似于mybatis的方式操作...首先将BBoss的maven依赖添加到你的pom.xml中: &lt; dependency &gt; &lt; groupId &gt;com.bbossgroups.p

Global site tag (gtag.js) - Google Analytics