最近,我们的项目有个融合需求,合作方需要我们根据其客户端规范提供相应的SOAP服务,对方提供了文档,并且提供了相应的wsdl文件。
我们用xfire框架根据文档中的描述做好了demo,然后使用它们提供的wsdl文件生成了客户端的代码,再进行测试,结果发现,客户端代码可以调用程序,却不能将参数正确地传递到服务端。
开始分析对比两份wsdl文件。一开始以为是namespace的原因,配置好了以后还是不行。后来比对了两份wsdl文件生成的客户端代码,发现对方提供的wsdl文件生成的客户端代码是使用的请求对象的属性使用的是原始对象,如String等,而我们生成的客户端代码,几乎都是JAXBElement类定义的属性。上网查了下资料,发现是因为 nillable 这个属性造成的。
找到原因后,开始查怎样才能把 nillable 这个属性去掉。找了很多资料都说XFire框架没办法控制这个 nillable 这个属性,建议换成JAXB,后来不断地折腾,一会儿是用axis2,一会儿是XFIRE+JAXB,可以把nillable这个属性值去掉,但又会引起其他一些乱七八糟的问题。
在我都要放弃的时候,忽然想说,把这个nillable放到aegis配置文件中,看看有啥作用。结果nillable这个属性去掉了,但是生成出来的wsdl文件中丢掉了minOccurs这个属性,既然可以在aegis文件配置nillable属性,minOccurs这个应该也可以起作用,测试了下后是可以使用的。至此,问题总算解决了。
注:maxOccurs这个属性貌似不起作用。
配置文件信息如下:
<?xml version="1.0" encoding="UTF-8"?>
<mappings xmlns:s="http://yournamespace.com/">
<mapping name="s:RequestName">
<property name="code" mappedName="Code" minOccurs="0" componentType="java.lang.String" />
</mapping>
</mappings>
生成的WSDL文件内容为:
<xsd:complexType name="RequestName">
<xsd:sequence>
<xsd:element minOccurs="0" name="Code" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
参考资料:
http://www.blogjava.net/wufalong/articles/209901.html
http://hi.baidu.com/hero8_8_8/item/413e16fb75f70a1ba62988d8
分享到:
相关推荐
xfire框架构建webservice应用: (通过myeclipse自动生成代码,自动导入xfire jar包,需要用jdk5.0) 需要的jar包:xFire 1.2 Core Libraries/xFire 1.2 HTTP Client Libraries/xFire 1.2 JAXB2 Libraries
xfire客户端生成自动生成java代码调用
手把手教你如何利用Xfire框架开发WebService
xfire 开发所用的jar包合集,大全喔!
使用xfire框架搭建的webService。主要有2个实例:SOAP Header中进行身份验证和WS-Security进行身份验证
xfire框架用到的几乎全部jar包,包括:serializer.jar xalan.jar xalansamples.jar xercesImpl.jar xml-apis.jar xsltcapplet.jar xsltcbrazil.jar xsltcejb.jar xsltcservlet.jar
最简单的MyEclipse8.0GA下使用Xfire框架开发WebService实例,逐个图片讲解。
xfire 插件 wsdl生成 工作的地方不能上网更新 xfire 插件 wsdl生成 工作的地方不能上网更新
xfire根据WSDL生成客户端代码.rar
基于xfire技术框架的WebService完整源码及数据库备份,
介绍了Xfire框架的使用以及怎样进行webservice的开发
Web Service XFire框架开发指南,pdf格式
Android应用源码之在远程上传以及下载图片---XFire框架.zip
WebService框架Xfire所需的所有jar包。
安卓Android源码——在远程上传以及下载图片---XFire框架.zip
NULL 博文链接:https://hufeng.iteye.com/blog/2393218
Android 在Android远程上传以及下载图片---XFire框架.rar
Android应用源码之在远程上传以及下载图片---XFire框架
在Android远程上传以及下载图片---XFire框架