用xmlrpc调用
经过修改后的ofbiz能够支持java.sql.Date了,但是还是不支持复杂的数据结构,它没有实现SOAP中的comlexType。碰到这种情况的话,可以考虑用xmlrpc来支持。
我们在party下编一个服务,程序如下:
- package org.ofbiz.party.party;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.Iterator;
- import java.util.LinkedList;
- import java.util.List;
- import java.util.Map;
- import org.ofbiz.base.util.UtilMisc;
- import org.ofbiz.entity.GenericDelegator;
- import org.ofbiz.entity.GenericEntityException;
- import org.ofbiz.entity.GenericValue;
- import org.ofbiz.entity.condition.EntityExpr;
- import org.ofbiz.entity.condition.EntityOperator;
- import org.ofbiz.service.DispatchContext;
- import org.ofbiz.service.ServiceUtil;
- public class TestParty {
-
- public static Map findPersonByfirstName(DispatchContext dctx, Map context) {
- GenericDelegator delegator = dctx.getDelegator();
- String firstName = (String)context.get("firstName");
- Map result = new HashMap();
-
- List toBeStored = null;
- List idList = new ArrayList();
- List exprs = new ArrayList();
-
- exprs.add(new EntityExpr("firstName", EntityOperator.EQUALS, firstName));
- List fList = new ArrayList();
- fList.add("paryId");
- fList.add("firstName");
- fList.add("lastName");
-
- try{
- toBeStored = delegator.findByAnd("Person", exprs);
- Iterator it = toBeStored.iterator();
- while(it.hasNext()){
- GenericValue p = (GenericValue)it.next();
- idList.add(UtilMisc.toMap("partyId", (String)p.get("partyId"),
- "firstName", (String)p.get("firstName"),
- "lastName", (String)p.get("lastName")));
- }
- result.put("personList", idList);
- }catch(GenericEntityException e){
- return ServiceUtil.returnError("firstName #" + firstName + "not found!");
- }
-
- return result;
- }
- }
service的配置文件如下:
- <service name="findPersonByfirstName" engine="java"
- location="org.ofbiz.party.party.TestParty" invoke="findPersonByfirstName" auth="false" export="true">
- <description>test</description>
- <attribute name="firstName" type="String" mode="IN" optional="false"/>
- <attribute name="personList" type="List" mode="OUT" optional="false"/>
- </service>
可以看到,这个服务的返回值是一个List,而List里面有一个Map,Map中有3个属性(partId,firstName,lastName)。
客户端程序如下:
- import java.net.MalformedURLException;
- import java.net.URL;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.Iterator;
- import java.util.List;
- import org.apache.xmlrpc.XmlRpcException;
- import org.apache.xmlrpc.client.XmlRpcClient;
- import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;
-
- public class testFindPersonByFirstName {
-
- public static void main(String[] args) throws MalformedURLException, XmlRpcException {
-
- XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
- config.setServerURL(new URL("http://127.0.0.1:18080/webtools/control/xmlrpc"));
- XmlRpcClient client = new XmlRpcClient();
- client.setConfig(config);
- Object[] params = new Object[]{"Nie"};
- HashMap result = (HashMap) client.execute("findPersonByfirstName", params);
-
- Object[] oz = (Object [])result.get("personList");
- System.out.println("partyId firstName lastName");
- for(int i=0;i<oz.length;i++){
- HashMap person = (HashMap)oz[i];
- System.out.println(person.get("partyId")+" "+person.get("firstName")+" "+person.get("lastName"));
- }
- }
- }
分享到:
相关推荐
基于spring封装的ofbiz所有服务,使用spring security进行安全验证,可以方便的发布为微服务,同时实现了一套直接使用ofbiz实体引擎操作ofbiz所有数据库表的spring应用框架设计
Ofbiz的Web框架.
【OFBiz Git 服务搭建详解】 OFBiz是一个开源的企业级应用框架,主要用于构建和管理电子商务系统。本教程将详细介绍如何在本地环境中搭建OFBiz项目,并使用Git进行版本控制。 首先,确保你拥有以下基础环境: 1. ...
此外,理解Ofbiz的事件驱动模型和基于服务组件架构(Service Component Architecture, SCA)的设计原则也至关重要。 总之,Ofbiz提供了一个全面的平台,让开发者能够高效地构建企业级应用。通过逐步学习和实践,你...
服务是OFBIZ中实现业务逻辑的单元,定义在`service.xml`文件中。服务可以调用其他服务,实现业务流程的编排。 ### 12. 国际化资源 OFBIZ支持多语言,通过`.properties`文件提供国际化资源,如错误消息、提示信息等...
API的设计遵循了面向服务架构(SOA),支持RESTful风格的Web服务,同时也提供传统的Java API调用方式。 2. **API 文档结构** OFBiz API中文版.chm文件是一个典型的Windows帮助文档,其中详细列举了OFBiz的所有服务...
5. 创建一个服务 OFBiz的服务层负责处理业务逻辑。在`Hot-deploy/myfirstdemo/services`目录下,创建`service.xml`文件,定义服务的元数据,包括服务名称、调用模式、输入输出参数等。例如,创建一个查询国家服务: ...
它的核心组件包括实体引擎(Entity Engine)、事务处理引擎(Transaction Engine)、服务引擎(Service Engine)、工作流引擎(WorkEffort Engine)以及事件驱动模型(Event Driven Model)。理解这些组件的功能和...
OFBiz采用Service Engine、Entity Engine、Component Engine和Web App Framework等核心组件,提供了一个灵活且可扩展的平台。在OFBiz中,CmsBackEnd是指内容管理系统(Content Management System)的后台部分,它...
在《Ofbiz开发快速入门》中,你将了解到Ofbiz的核心概念,如实体模型(Entity)、服务(Service)和组件(Component)。实体模型是Ofbiz的基础,它定义了业务数据结构;服务则负责处理业务逻辑,是Ofbiz实现功能的...
7. **社区资源**:OfBiz拥有活跃的社区,用户可以在论坛、邮件列表和GitHub上找到解决问题的方法,以及与其他OfBiz使用者交流的经验分享。 通过深入探索OFBIZ_Demo,无论是初学者还是经验丰富的开发者,都可以...
3. **OFBiz架构理解**:OFBiz使用模型-视图-控制器(MVC)设计模式,包含实体(Entity)、服务(Service)、组件(Component)、控制器(Controller)和视图(View)等部分。理解这些概念对于开发至关重要。 4. **...
OFBiz的核心功能包括产品目录管理、订单处理、库存控制、供应链管理、财务管理、客户服务等模块,这些模块之间通过服务组件架构(Service Component Architecture, SCA)紧密集成,使得开发者可以方便地进行定制和...
Ofbiz的Web请求流程通常涉及以下几个步骤:接收请求、解析请求、调用服务、更新模型、渲染视图并返回响应。这一过程确保了请求处理的高效性和灵活性。 总的来说,基于Ofbiz的Web框架提供了一种强大且全面的方式来...
服务层的设计采用服务组件架构(Service Component Architecture,SCA),服务通过接口定义,实现松耦合和高复用。服务可以调用实体引擎进行数据操作,确保了数据访问的统一性和一致性。 四、工作流(WorkFlow) ...
* webtools:Ofbiz 的 Web 工具代码 使用 Eclipse 打开 Ofbiz 的 Ant 命令 我们可以使用 Eclipse 打开 Ofbiz 的 Ant 命令,以便编译和运行 Ofbiz。我们可以在 Eclipse 的“Window”菜单中选择“Show View” > ...
3. **核心组件**:解释Ofbiz中的Service Engine、Entity Engine、WorkEffort Engine等核心组件的功能和使用方法。 4. **业务实体管理**:描述如何使用Ofbiz的实体引擎来管理数据库中的业务对象,创建和修改实体模型...
Ofbiz的核心概念包括组件、服务、实体、工作流和事件。组件是Ofbiz中的基本组织单元,它们封装了特定的业务功能。比如,“产品”组件处理与产品相关的所有事务,而“订单”组件则负责订单管理。服务是Ofbiz中执行...