ofbiz4 对于webservice的支持实在是不咋地,在官方的文档中,SOAP只是支持基础类型的数据的传入传出,这些基础的数据类型我们可以参照 org.ofbiz.service.ModelParam的java2wsdlType方法。大家可以看到这个方法的类只是支持简单的基础数据类型。如 下:

[java:showcolumns] view plaincopy
·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150

  1. protected String java2wsdlType() throws WSDLException {
  2. if (ObjectType.instanceOf(java.lang.Character.class, this.type)) {
  3. return "string";
  4. } else if (ObjectType.instanceOf(java.lang.String.class, this.type)) {
  5. return "string";
  6. } else if (ObjectType.instanceOf(java.lang.Byte.class, this.type)) {
  7. return "byte";
  8. } else if (ObjectType.instanceOf(java.lang.Boolean.class, this.type)) {
  9. return "boolean";
  10. } else if (ObjectType.instanceOf(java.lang.Integer.class, this.type)) {
  11. return "int";
  12. } else if (ObjectType.instanceOf(java.lang.Double.class, this.type)) {
  13. return "double";
  14. } else if (ObjectType.instanceOf(java.lang.Float.class, this.type)) {
  15. return "float";
  16. } else if (ObjectType.instanceOf(java.lang.Short.class, this.type)) {
  17. return "short";
  18. } else if (ObjectType.instanceOf(java.math.BigDecimal.class, this.type)) {
  19. return "decimal";
  20. } else if (ObjectType.instanceOf(java.math.BigInteger.class, this.type)) {
  21. return "integer";
  22. } else if (ObjectType.instanceOf(java.util.Calendar.class, this.type)) {
  23. return "dateTime";
  24. } else if (ObjectType.instanceOf(java.util.Date.class, this.type)) {
  25. return "dateTime";
  26. } else if (ObjectType.instanceOf(java.lang.Long.class, this.type)) {
  27. return "unsignedInt";
  28. } else if (ObjectType.instanceOf(java.sql.Timestamp.class, this.type)) {
  29. return "string";
  30. }
  31. // TODO add array support (maybe even convert List objects); add GenericValue/Map support
  32. throw new WSDLException(WSDLException.OTHER_ERROR, "Service cannot be described with WSDL (" + this.name + " / " + this.type + ")");
  33. }

这个方法就是帮助我们生成wsdl文件,或者说wsdl = dctx.getWSDL(serviceName, locationUri)调用了上边的方法,用eclipse很容易就找到了ofbiz/framework/service/src/org /ofbiz/service/ModelParam.java里面的:

protected String java2wsdlType() throws WSDLException
这个方法是来吧serivce中参数类型转换成web service的参数类型的,

如果你定义的输出的数据类型超出这些数据类型,那么当你请求wsdl链接的时候就等着报错吧。

不过如果你有兴趣针对支持的基础数据类型做修正,那么你可以修改这个地方的代码。

这里补充一个基础知识,ofbiz中实体中的字段类型,对应的java中的数据类型的定义是通过一个xml文件定义的,在framework/entity/fieldtype下,这下面有很多个文件,是不同的数据库对应的配置文件,
我们看无论是mysql或者是derby,实体中的date对应的java类型是java.sql.Date。

由上边的基础知识引发的常见问题如:当我们的数据类型是java.sql.Date,而我们ofbiz支持的基础数据类型又不支持这个基础类型,那么这个时候我们可能不得不更改这个文件来支持我们的这个数据类型了。

更改方法很简单就是加上如下的代码,并重新编辑整个项目:

[java] view plaincopy
  1. } else if (ObjectType.instanceOf(java.sql.Date.class, this.type)) {
  2. return "dateTime";
  3. } else if (ObjectType.instanceOf(java.sql.Time.class, this.type)) {
  4. return "string";
  5. }

由此可见我们ofbiz的soap支持的webservice的参数类型真是不完善。更加不会支持那些序列化的复杂数据类型了。ofbiz4 对于webservice的支持实在是不咋地,在官方的文档中,SOAP只是支持基础类型的数据的传入传出,这些基础的数据类型我们可以参照 org.ofbiz.service.ModelParam的java2wsdlType方法。大家可以看到这个方法的类只是支持简单的基础数据类型。如 下:

[java:showcolumns] view plaincopy
·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150

  1. protected String java2wsdlType() throws WSDLException {
  2. if (ObjectType.instanceOf(java.lang.Character.class, this.type)) {
  3. return "string";
  4. } else if (ObjectType.instanceOf(java.lang.String.class, this.type)) {
  5. return "string";
  6. } else if (ObjectType.instanceOf(java.lang.Byte.class, this.type)) {
  7. return "byte";
  8. } else if (ObjectType.instanceOf(java.lang.Boolean.class, this.type)) {
  9. return "boolean";
  10. } else if (ObjectType.instanceOf(java.lang.Integer.class, this.type)) {
  11. return "int";
  12. } else if (ObjectType.instanceOf(java.lang.Double.class, this.type)) {
  13. return "double";
  14. } else if (ObjectType.instanceOf(java.lang.Float.class, this.type)) {
  15. return "float";
  16. } else if (ObjectType.instanceOf(java.lang.Short.class, this.type)) {
  17. return "short";
  18. } else if (ObjectType.instanceOf(java.math.BigDecimal.class, this.type)) {
  19. return "decimal";
  20. } else if (ObjectType.instanceOf(java.math.BigInteger.class, this.type)) {
  21. return "integer";
  22. } else if (ObjectType.instanceOf(java.util.Calendar.class, this.type)) {
  23. return "dateTime";
  24. } else if (ObjectType.instanceOf(java.util.Date.class, this.type)) {
  25. return "dateTime";
  26. } else if (ObjectType.instanceOf(java.lang.Long.class, this.type)) {
  27. return "unsignedInt";
  28. } else if (ObjectType.instanceOf(java.sql.Timestamp.class, this.type)) {
  29. return "string";
  30. }
  31. // TODO add array support (maybe even convert List objects); add GenericValue/Map support
  32. throw new WSDLException(WSDLException.OTHER_ERROR, "Service cannot be described with WSDL (" + this.name + " / " + this.type + ")");
  33. }

这个方法就是帮助我们生成wsdl文件,或者说wsdl = dctx.getWSDL(serviceName, locationUri)调用了上边的方法,用eclipse很容易就找到了ofbiz/framework/service/src/org /ofbiz/service/ModelParam.java里面的:

protected String java2wsdlType() throws WSDLException
这个方法是来吧serivce中参数类型转换成web service的参数类型的,

如果你定义的输出的数据类型超出这些数据类型,那么当你请求wsdl链接的时候就等着报错吧。

不过如果你有兴趣针对支持的基础数据类型做修正,那么你可以修改这个地方的代码。

这里补充一个基础知识,ofbiz中实体中的字段类型,对应的java中的数据类型的定义是通过一个xml文件定义的,在framework/entity/fieldtype下,这下面有很多个文件,是不同的数据库对应的配置文件,
我们看无论是mysql或者是derby,实体中的date对应的java类型是java.sql.Date。

由上边的基础知识引发的常见问题如:当我们的数据类型是java.sql.Date,而我们ofbiz支持的基础数据类型又不支持这个基础类型,那么这个时候我们可能不得不更改这个文件来支持我们的这个数据类型了。

更改方法很简单就是加上如下的代码,并重新编辑整个项目:

[java] view plaincopy
  1. } else if (ObjectType.instanceOf(java.sql.Date.class, this.type)) {
  2. return "dateTime";
  3. } else if (ObjectType.instanceOf(java.sql.Time.class, this.type)) {
  4. return "string";
  5. }

由此可见我们ofbiz的soap支持的webservice的参数类型真是不完善。更加不会支持那些序列化的复杂数据类型了。

ofbiz4 对于webservice的支持实在是不咋地,在官方的文档中,SOAP只是支持基础类型的数据的传入传出,这些基础的数据类型我们可以参照 org.ofbiz.service.ModelParam的java2wsdlType方法。大家可以看到这个方法的类只是支持简单的基础数据类型。如 下:

[java:showcolumns] view plaincopy
·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150

  1. protected String java2wsdlType() throws WSDLException {
  2. if (ObjectType.instanceOf(java.lang.Character.class, this.type)) {
  3. return "string";
  4. } else if (ObjectType.instanceOf(java.lang.String.class, this.type)) {
  5. return "string";
  6. } else if (ObjectType.instanceOf(java.lang.Byte.class, this.type)) {
  7. return "byte";
  8. } else if (ObjectType.instanceOf(java.lang.Boolean.class, this.type)) {
  9. return "boolean";
  10. } else if (ObjectType.instanceOf(java.lang.Integer.class, this.type)) {
  11. return "int";
  12. } else if (ObjectType.instanceOf(java.lang.Double.class, this.type)) {
  13. return "double";
  14. } else if (ObjectType.instanceOf(java.lang.Float.class, this.type)) {
  15. return "float";
  16. } else if (ObjectType.instanceOf(java.lang.Short.class, this.type)) {
  17. return "short";
  18. } else if (ObjectType.instanceOf(java.math.BigDecimal.class, this.type)) {
  19. return "decimal";
  20. } else if (ObjectType.instanceOf(java.math.BigInteger.class, this.type)) {
  21. return "integer";
  22. } else if (ObjectType.instanceOf(java.util.Calendar.class, this.type)) {
  23. return "dateTime";
  24. } else if (ObjectType.instanceOf(java.util.Date.class, this.type)) {
  25. return "dateTime";
  26. } else if (ObjectType.instanceOf(java.lang.Long.class, this.type)) {
  27. return "unsignedInt";
  28. } else if (ObjectType.instanceOf(java.sql.Timestamp.class, this.type)) {
  29. return "string";
  30. }
  31. // TODO add array support (maybe even convert List objects); add GenericValue/Map support
  32. throw new WSDLException(WSDLException.OTHER_ERROR, "Service cannot be described with WSDL (" + this.name + " / " + this.type + ")");
  33. }

这个方法就是帮助我们生成wsdl文件,或者说wsdl = dctx.getWSDL(serviceName, locationUri)调用了上边的方法,用eclipse很容易就找到了ofbiz/framework/service/src/org /ofbiz/service/ModelParam.java里面的:

protected String java2wsdlType() throws WSDLException
这个方法是来吧serivce中参数类型转换成web service的参数类型的,

如果你定义的输出的数据类型超出这些数据类型,那么当你请求wsdl链接的时候就等着报错吧。

不过如果你有兴趣针对支持的基础数据类型做修正,那么你可以修改这个地方的代码。

这里补充一个基础知识,ofbiz中实体中的字段类型,对应的java中的数据类型的定义是通过一个xml文件定义的,在framework/entity/fieldtype下,这下面有很多个文件,是不同的数据库对应的配置文件,
我们看无论是mysql或者是derby,实体中的date对应的java类型是java.sql.Date。

由上边的基础知识引发的常见问题如:当我们的数据类型是java.sql.Date,而我们ofbiz支持的基础数据类型又不支持这个基础类型,那么这个时候我们可能不得不更改这个文件来支持我们的这个数据类型了。

更改方法很简单就是加上如下的代码,并重新编辑整个项目:

[java] view plaincopy
  1. } else if (ObjectType.instanceOf(java.sql.Date.class, this.type)) {
  2. return "dateTime";
  3. } else if (ObjectType.instanceOf(java.sql.Time.class, this.type)) {
  4. return "string";
  5. }

由此可见我们ofbiz的soap支持的webservice的参数类型真是不完善。更加不会支持那些序列化的复杂数据类型了。

转 ofbiz的webservice接口提供(2)-数据类型的局限性相关推荐

  1. 转 ofbiz的webservice接口提供(1)-WSDL的生成

    ofbiz的service:这个是ofbiz赖以骄傲的设计方式.她可以将所有内部实体对象的CRUD都使用service的方式提供,不同系统之间可以通过互相调用service来完成业务操作.这种松耦合的 ...

  2. webservice接口与HTTP接口学习笔记

    一.webservice 的概念 Web 是使应用程序可以与平台和编程语言无关的方式进行相互通信的一项技术.Web 服务是一个软件接口,它描述了一组可以在网络上通过标准化的 XML 消息传递访问的操作 ...

  3. postman调用webservice接口_【分享】关于接口对前后端和测试的意义

    1.什么是接口? 接口测试主要用于外部系统与系统之间以及内部各个子系统之间的交互点,定义特定的交互点,然后通过这些交互点来,通过一些特殊的规则也就是协议,来进行数据之间的交互. 2.接口都有哪些类型? ...

  4. postman调用webservice接口_接口对前后端和测试的意义

    1.什么是接口? 接口测试主要用于外部系统与系统之间以及内部各个子系统之间的交互点,定义特定的交互点,然后通过这些交互点来,通过一些特殊的规则也就是协议,来进行数据之间的交互. 2.接口都有哪些类型? ...

  5. Webservice接口与HTTP接口学习笔记。

    一.webservice 的概念 Web 是使应用程序可以与平台和编程语言无关的方式进行相互通信的一项技术.Web 服务是一个软件接口,它描述了一组可以在网络上通过标准化的 XML 消息传递访问的操作 ...

  6. Webservice接口的生成及调用

    最近项目上要对接一个Webservice形式的接口,因为以前一直没有对接过这种类型的,所以这次专门查了一些资料学习下 一.Webservice的简单介绍 WebService是一种跨编程语言和跨操作系 ...

  7. java调用webservice接口(.asmx)

    前几天对接阿里云短信接口时,需要调用其他系统的数据,该系统开发人员给我提供了webservice接口.对于从来没见过webservice接口的我,真的是一脸懵.现在把记录一下,方便自己以后用,说不定也 ...

  8. http接口与webservice接口

    一:概念 (1).http接口: Http协议是建立在TCP协议基础之上的,当浏览器需要从服务器获取网页数据的时候,会发出一次Http请求.Http会通过TCP建立起一个到服务器的连接通道,当本次请求 ...

  9. 调用webservice接口,数据不回滚问题

    调用webservice接口,数据不回滚问题 使用cxf+spring框架开发webservice接口,在开发一个具有保存数据的接口功能时,如果数据发生了异常,对service层无论使用了xml配置声 ...

最新文章

  1. x230 linux wifi,笔记本thinkpad x230i centos6.3 无线网卡完全配置
  2. 探索JAVA并发 - 线程池详解
  3. 阿里三面,P9面试官是如何360°无死角考察候选人的?
  4. 长沙网络推广教你如何在网站优化中让URL标准化?
  5. Sicily 1155. Can I Post the lette
  6. 【IBatis.Net】 各种配置说明
  7. python data analysis | python数据预处理(基于scikit-learn模块)
  8. 在ASP.Net和IIS中删除不必要的HTTP响应头
  9. mooc作业怎么上传附件_交作业的一二三
  10. Android下查看共享库依赖项
  11. VM14 启动Ubutun16.04 黑屏,实用解决办法
  12. fastadmin中ajax传参
  13. 集合全套以及知识点整合
  14. 这个被上帝抛弃的国家,创立了全球一半的科技公司
  15. 车规电阻AEC-Q200测试项目及元器件检测设备
  16. 记事狗微博php,记事狗微博系统_366rtc 源码采用php实现 - 下载 - 搜珍网
  17. WhatsApp群控的好处,为什么使用SendWS拓客系统实现WhatsApp耐用账号的群控管理?
  18. 计算机主机的cpu作用,cpu的作用是什么?cpu的主要功能详解
  19. python bug
  20. 做外贸怎么起步,从哪里开发客户

热门文章

  1. 烟雾检测电路c语言程序,烟雾报警器电路图大全(六款模拟电路设计原理图详解)...
  2. java用画线写字_用Java画线
  3. RocketMQ可视化控制台
  4. FastCgi与PHP-fpm之间是个什么样的关系
  5. Apache httpd设置HTTPS双向认证
  6. 什么是三层架构?简单的介绍三层架构!
  7. 这么详细的Python matplotlib 绘制图形 还不赶紧收藏
  8. 新增一个主键自增长_为什么InnoDB宜用自增主键
  9. java weakhashmap用法_Java WeakHashMap指南
  10. linux安装qt_采用STM32MP1的PanGu Board开发板运行Qt应用