`
tower
  • 浏览: 244776 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ofbiz的服务(service)export成web service的方法(7)

阅读更多
xmlrpc调用可以使用压缩

xmlrpc的报文的冗余是很多的,大量的标签将会消耗掉你的带宽,所以对xmlrpc的返回的报文进行压缩很有必要的。以前写的代码:
  1. import java.net.MalformedURLException;
  2. import java.net.URL;
  3. import java.util.ArrayList;
  4. import java.util.HashMap;
  5. import java.util.Iterator;
  6. import java.util.List;
  7. import org.apache.xmlrpc.XmlRpcException;
  8. import org.apache.xmlrpc.client.XmlRpcClient;
  9. import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;
  10.     
  11. public class testFindPersonByFirstName {
  12.     /**
  13.      * @param args
  14.      * @throws MalformedURLException 
  15.      * @throws XmlRpcException 
  16.      */
  17.     public static void main(String[] args) throws MalformedURLException, XmlRpcException {
  18.         // TODO Auto-generated method stub
  19.         XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
  20.         config.setServerURL(new URL("http://127.0.0.1:18080/webtools/control/xmlrpc"));
  21.         XmlRpcClient client = new XmlRpcClient();
  22.         client.setConfig(config);
  23.         Object[] params = new Object[]{"John"};
  24.         HashMap result = (HashMap) client.execute("findPersonByfirstName", params);
  25.         
  26.         Object[] oz = (Object [])result.get("personList");
  27.         System.out.println("partyId firstName   lastName");
  28.         for(int i=0;i<oz.length;i++){
  29.             HashMap person = (HashMap)oz[i];
  30.             System.out.println(person.get("partyId")+"  "+person.get("firstName")+" "+person.get("lastName"));
  31.         }
  32.     }
  33. }

我们用TcpMon抓一下包,返回的数据:
  1. HTTP/1.1 200 OK
  2. Server: Apache-Coyote/1.1
  3. Set-Cookie: JSESSIONID=B5E7115DD5E2568D75AF6CD19B0DB2E4.jvm1; Path=/webtools
  4. Set-Cookie: OFBiz.Visitor=10311Expires=Sat, 28-Nov-2009 07:57:12 GMT; Path=/
  5. Content-Type: text/xml;charset=UTF-8
  6. Transfer-Encoding: chunked
  7. Date: Fri, 28 Nov 2008 07:57:12 GMT
  8. 1011
  9. <?xml version="1.0" encoding="UTF-8"?><methodResponse><params><param><value><struct><member><name>personList</name><value><array><data><value><struct><member><name>partyId</name><value>10000</value></member><member><name>firstName</name><value>John</value></member><member><name>lastName</name><value>Tower</value></member></struct></value><value><struct><member><name>partyId</name><value>10001</value></member><member><name>firstName</name><value>John</value></member><member><name>lastName</name><value>Tower</value></member></struct></value><value><struct><member><name>partyId</name><value>10002</value></member><member><name>firstName</name><value>John</value></member><member><name>lastName</name><value>Tower</value></member></struct></value><value><struct><member><name>partyId</name><value>10003</value></member><member><name>firstName</name><value>John</value></member><member><name>lastName</name><value>Tower</value></member></struct></value><value><struct><member><name>partyId</name><value>10004</value></member><member><name>firstName</name><value>John</value></member><member><name>lastName</name><value>Tower</value></member></struct></value><value><struct><member><name>partyId</name><value>10010</value></member><member><name>firstName</name><value>John</value></member><member><name>lastName</name><value>Tower</value></member></struct></value><value><struct><member><name>partyId</name><value>10020</value></member><member><name>firstName</name><value>John</value></member><member><name>lastName</name><value>Tower</value></member></struct></value><value><struct><member><name>partyId</name><value>10030</value></member><member><name>firstName</name><value>John</value></member><member><name>lastName</name><value>Tower</value></member></struct></value><value><struct><member><name>partyId</name><value>10040</value></member><member><name>firstName</name><value>John</value></member><member><name>lastName</name><value>Tower</value></member></struct></value><value><struct><member><name>partyId</name><value>10050</value></member><member><name>firstName</name><value>John</value></member><member><name>lastName</name><value>Tower</value></member></struct></value><value><struct><member><name>partyId</name><value>10060</value></member><member><name>firstName</name><value>John</value></member><member><name>lastName</name><value>Tower</value></member></struct></value><value><struct><member><name>partyId</name><value>10070</value></member><member><name>firstName</name><value>John</value></member><member><name>lastName</name><value>Tower</value></member></struct></value><value><struct><member><name>partyId</name><value>10071</value></member><member><name>firstName</name><value>John</value></member><member><name>lastName</name><value>Tower</value></member></struct></value><value><struct><member><name>partyId</name><value>10072</value></member><member><name>firstName</name><value>John</value></member><member><name>lastName</name><value>Tower</value></member></struct></value><value><struct><member><name>partyId</name><value>10080</value></member><member><name>firstName</name><value>John</value></member><member><name>lastName</name><value>Tower</value></member></struct></value><value><struct><member><name>partyId</name><value>10081</value></member><member><name>firstName</name><value>John</value></member><member><name>lastName</name><value>Tower</value></member></struct></value><value><struct><member><name>partyId</name><value>10082</value></member><member><name>firstName</name><value>John</value></member><member><name>lastName</name><value>Tower</value></member></struct></value><value><struct><member><name>partyId</name><value>10090</value></member><member><name>firstName</name><value>John</value></member><member><name>lastName</name><value>Tower</value></member></struct></value><value><struct><member><name>partyId</name><value>10100</value></member><member><name>firstName</name><value>John</value></member><member><name>lastName</name><value>Tower</value></member></struct></value></data></array></value></member></struct></value></param></params></methodResponse>
  10. 0
恐怖吧!!!!数据长度为1011。

我们修改一下代码,增加一行:
  1. config.setGzipRequesting(true);
再试试,数据返回成功,但是返回部分已经用gzip压缩过了,可惜的是tcpmon看不到压缩后有多长,是107吗?不清楚,但是从gzip的算法来看,上述的报文的压缩率应该是很高的,因为有太多的冗余
分享到:
评论

相关推荐

    ofbiz_springservice.zip

    基于spring封装的ofbiz所有服务,使用spring security进行安全验证,可以方便的发布为微服务,同时实现了一套直接使用ofbiz实体引擎操作ofbiz所有数据库表的spring应用框架设计

    Ofbiz的Web框架.

    Ofbiz的Web框架.

    ofbiz git 服务搭建

    【OFBiz Git 服务搭建详解】 OFBiz是一个开源的企业级应用框架,主要用于构建和管理电子商务系统。本教程将详细介绍如何在本地环境中搭建OFBiz项目,并使用Git进行版本控制。 首先,确保你拥有以下基础环境: 1. ...

    ofbiz开发者入门教程

    此外,理解Ofbiz的事件驱动模型和基于服务组件架构(Service Component Architecture, SCA)的设计原则也至关重要。 总之,Ofbiz提供了一个全面的平台,让开发者能够高效地构建企业级应用。通过逐步学习和实践,你...

    OFBIZ10.04组件开发入门.doc

    服务是OFBIZ中实现业务逻辑的单元,定义在`service.xml`文件中。服务可以调用其他服务,实现业务流程的编排。 ### 12. 国际化资源 OFBIZ支持多语言,通过`.properties`文件提供国际化资源,如错误消息、提示信息等...

    ofbiz api开发文档

    API的设计遵循了面向服务架构(SOA),支持RESTful风格的Web服务,同时也提供传统的Java API调用方式。 2. **API 文档结构** OFBiz API中文版.chm文件是一个典型的Windows帮助文档,其中详细列举了OFBiz的所有服务...

    ofbiz一个完整例子

    本示例将带你逐步了解如何在OFBiz中创建一个完整的应用实例,从实体创建到服务定义,再到界面展现。 1. 创建实体 在OFBiz中,实体是数据模型的核心,它们对应于数据库中的表。在`Hot-deploy/myfirstdemo/entitydef/...

    OFBIZ开发指南 英文2

    它的核心组件包括实体引擎(Entity Engine)、事务处理引擎(Transaction Engine)、服务引擎(Service Engine)、工作流引擎(WorkEffort Engine)以及事件驱动模型(Event Driven Model)。理解这些组件的功能和...

    ofbiz开发入门之CmsBackEnd实现的CRUD

    OFBiz采用Service Engine、Entity Engine、Component Engine和Web App Framework等核心组件,提供了一个灵活且可扩展的平台。在OFBiz中,CmsBackEnd是指内容管理系统(Content Management System)的后台部分,它...

    Ofbiz快速开发入门详解

    在《Ofbiz开发快速入门》中,你将了解到Ofbiz的核心概念,如实体模型(Entity)、服务(Service)和组件(Component)。实体模型是Ofbiz的基础,它定义了业务数据结构;服务则负责处理业务逻辑,是Ofbiz实现功能的...

    关于OFBIZ的资料

    7. **社区资源**:OfBiz拥有活跃的社区,用户可以在论坛、邮件列表和GitHub上找到解决问题的方法,以及与其他OfBiz使用者交流的经验分享。 通过深入探索OFBIZ_Demo,无论是初学者还是经验丰富的开发者,都可以...

    WIN7上安装Ofbiz 数据库 postgresql

    启动OFBiz服务,通过访问OFBiz的Web界面来验证安装是否成功。如果一切正常,你现在已经在Windows 7环境下成功地搭建了OFBiz与PostgreSQL的集成环境,可以开始进行开发和管理工作。 总结,本文详细介绍了在Windows 7...

    基于Ofbiz的Web框架.pdf

    Ofbiz的Web请求流程通常涉及以下几个步骤:接收请求、解析请求、调用服务、更新模型、渲染视图并返回响应。这一过程确保了请求处理的高效性和灵活性。 总的来说,基于Ofbiz的Web框架提供了一种强大且全面的方式来...

    ofbiz-practice

    3. **OFBiz架构理解**:OFBiz使用模型-视图-控制器(MVC)设计模式,包含实体(Entity)、服务(Service)、组件(Component)、控制器(Controller)和视图(View)等部分。理解这些概念对于开发至关重要。 4. **...

    OFBiz经典入门教程加速度编写

    OFBiz的核心功能包括产品目录管理、订单处理、库存控制、供应链管理、财务管理、客户服务等模块,这些模块之间通过服务组件架构(Service Component Architecture, SCA)紧密集成,使得开发者可以方便地进行定制和...

    ofbiz数据结构设计

    服务层的设计采用服务组件架构(Service Component Architecture,SCA),服务通过接口定义,实现松耦合和高复用。服务可以调用实体引擎进行数据操作,确保了数据访问的统一性和一致性。 四、工作流(WorkFlow) ...

    ofbiz安装与配置

    * webtools:Ofbiz 的 Web 工具代码 使用 Eclipse 打开 Ofbiz 的 Ant 命令 我们可以使用 Eclipse 打开 Ofbiz 的 Ant 命令,以便编译和运行 Ofbiz。我们可以在 Eclipse 的“Window”菜单中选择“Show View” &gt; ...

    ofbiz 研究

    3. **核心组件**:解释Ofbiz中的Service Engine、Entity Engine、WorkEffort Engine等核心组件的功能和使用方法。 4. **业务实体管理**:描述如何使用Ofbiz的实体引擎来管理数据库中的业务对象,创建和修改实体模型...

Global site tag (gtag.js) - Google Analytics