ofbiz的service:这个是ofbiz赖以骄傲的设计方式。她可以将所有内部实体对象的CRUD都使用service的方式提供,不同系统之间可以通过互相调用service来完成业务操作。这种松耦合的方式是很多框架梦寐以求的效果。
在ofbiz4的文档中提到,如果想将ofbiz的某个服务开放成webservice只是需要轻轻的将我们定义service文件中的service属性中的export设定为true。
例如:我的一个ofbiz项目的servicedef目录下的services.xml文件中定义了一个服务
- <service
- name="findSeniorService"
- engine="java"
- location="com.hc360.cem.ws.CEMSeniorMemberService"
- invoke="findSeniorService"
- export="true"
- validate="false"
- auth="false">
- <description>CRM call CEM findSeniorService soap</description>
- <attribute name="userid" type="String" mode="INOUT" optional="true"/>
- <attribute name="salt" type="String" mode="IN" optional="true"/>
- <attribute name="aaa" type="String" mode="OUT" optional="true"/>
- <attribute name="bbb" type="String" mode="OUT" optional="true"/>
- <attribute name="ccc" type="String" mode="OUT" optional="true"/>
- </service>
上边图片的意思就是将:com.hc360.cem.ws.CEMSeniorMemberService类中的findSeniorService作为soap接口提供出去。输入参数有userid、salt,输出参数有userid、aaa、bbb、ccc。
而我实际类如下:
- import java.util.Map;
- import javolution.util.FastMap;
- import org.ofbiz.base.util.Debug;
- import org.ofbiz.service.DispatchContext;
- public class CEMSeniorMemberService {
- /**
- * 开放一个service供测试使用
- * wsdl的访问方式:http://yourip:port/project/control/SOAPService/findSeniorService?wsdl
- * 但是ofbiz给我们生成的wsdl使用任何的客户端生成工具都无法正确生成,但是这个webservice接口是可以使用的
- * @author kongqz
- * @date 2009-03-11
- *
- * */
- public static Map<String, Object> findSeniorService(DispatchContext ctx, Map<String, ? extends Object> context) {
- //存放结果的map
- Map<String, Object> result = FastMap.newInstance();
- // GenericDelegator delegator = ctx.getDelegator();
- String userid = (String) context.get("userid");
- String salt = (String) context.get("salt");
- Debug.logInfo("salt is ["+salt+"],userid is ["+userid+"] ", "findSeniorService");
- result.put("aaa", "test_aaaaa");
- result.put("bbb", "test_bbbbb");
- result.put("ccc", "test_ccccc");
- result.put("userid", userid);
- return result;
- }
- }
我传入的参数将从ofbiz的这个context中获取,而我返回的参数将通过result这个map来put出去。
这里我想说明的是:这个时候如果我调用如下链接:
http://yourip:port/projectname/control/SOAPService/findSeniorService?wsdl
就可以看到我这个服务的wsdl文件。
如果想看整个项目所有暴露给外部访问的webservice有哪些,我可以使用
http://yourip:port/projectname/control/SOAPService?wsdl
来进行查看。
通过上边wsdl链接我们需要知道一点,我们的SOAPService哪里来的?
这里就需要指出,如果想将你的SOAPService暴露给外部,需要ofbiz的controller来做点贡献。因为ofbiz的外部请求都是通过ofbiz的servlet来处理的,入口点是项目的controller文件,我们需要给controller文件增加支持。
controller文件:ofbiz当前项目的所有请求的入口,通过对应request-map:将所有的请求uri对应到指定的处理函数上。
增加如下:
- <!-- 引擎接口 -->
- <request-map uri="httpService">
- <event type="java" path="org.ofbiz.service.engine.HttpEngine" invoke="httpEngine"/>
- <response name="success" type="none"/>
- <response name="error" type="none"/>
- </request-map>
- <request-map uri="SOAPService">
- <event type="soap"/>
- <response name="error" type="none"/>
- <response name="success" type="none"/>
- </request-map>
- <request-map uri="xmlrpc" track-serverhit="false" track-visit="false">
- <event type="xmlrpc"/>
- <response name="error" type="none"/>
- <response name="success" type="none"/>
- </request-map>
通过在controller.xml文件上的支持,你才能将httpService,SOAPService,xmlrpc这些服务对外提供,你的链接才能写成上边的方式。
总结下ofbiz的webservice提供前提:
1、controller的支持,SOAPService的接口暴露】
2、service类的提供,这个类是static方式的,数据的传入传出使用map方式(注意那个context)
3、services.xml文件的定义,将你的webservice定义在这里,并设定export=true,否则只能是一个内部的service了。
4、访问我们项目提供的所有webservice,看wsdl文件是否可用
相关推荐
不用解压ofbiz-entry-zh-cn.zip 直接把zip修改为doc 即可。 ofbiz-entry-zh-cn.doc 博文链接:https://jiasudu.iteye.com/blog/157892
最新版OFBiz,apache-ofbiz-16.11.05,apache-ofbiz-16.11.05
有兴趣的朋友可以自己生成,ant命令是:docs-all,该命令生成帮助文档时会获取操作系统语言设置,要生成英文文档请先将操作系统语言改为英语,要生成中文文档需要在docs-all命令中的<default-javadoc/>添加属性...
这个压缩包文件"Ofbiz-16-全量数据库873张表.rar"包含了Apache Ofbiz 16版本的全量数据库结构,包括873个数据表的SQL脚本。这些脚本用于创建和初始化数据库,对于理解和开发基于Ofbiz的应用程序至关重要。 1. **...
Magento 与 Apache OFBiz 集成,兼容 OFBiz-13.07 和主干 在 Apache OFBiz-13.07 和 OFBiz 主干中使用磁电机组件的步骤 启动终端并进入 Apache OFBiz 的主目录 在热部署文件夹中签出 magento 组件 使用命令加载数据...
C#开发核心代码,用拼接XML方式,调用封装了实体类的SOAP接口
1. OFBiz是一个开源的电子商务平台,提供了基于Java的web应用程序的开发组件和工具。 2. OFBiz的主要特点是提供了一整套的开发基于Java的web应用程序的组件和工具,包括实体引擎, 服务引擎, 消息引擎, 工作流引擎, ...
不用解压ofbiz-manual-zh-cn.zip 直接把.zip修改为.pdf即可 ofbiz-manual-zh-cn.pdf 博文链接:https://jiasudu.iteye.com/blog/157891
**OFBiz-alipay 配置文档** OFBiz(Open For Business Project)是一个开源的企业级应用框架,用于构建和管理电子商务网站、供应链管理、CRM、ERP等业务系统。它提供了全面的业务组件和服务,使得开发者可以快速...
深入研究源码,你可以了解到OFBiz如何处理事务、如何实现服务接口、以及如何管理和调度业务流程。 二、工具介绍 在OFBiz的开发过程中,一些关键工具将起到重要作用: 1. **Maven**:OFBiz项目依赖管理工具,用于...
OFBiz-manual-zh.docOFBiz-manual-zh.docOFBiz-manual-zh.docOFBiz-manual-zh.docOFBiz-manual-zh.doc
CVE-2021-26295-Apache-OFBiz CVE-2021-26295 Apache OFBiz rmi反序列化POC需要将ysoserial.jar放置在目录下,并且不能使用java的高版本
3. Ofbiz:我们需要下载 Ofbiz 的压缩包(ofbiz-release-12.04.02.zip),下载地址为:http://www.apache.org/dyn/closer.cgi/ofbiz/apache-ofbiz-12.04.02.zip。或者,我们可以使用 SVN 下载 Ofbiz 的源代码,下载...