最近,我们的项目有个融合需求,合作方需要我们根据其客户端规范提供相应的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应用详解 #### 一、XFire框架简介 XFire是一个轻量级的WebService框架,它提供了一种简单的方式来开发基于Java的Web服务和客户端应用程序。XFire支持SOAP 1.1和1.2协议,并且能够很好...
XFire框架是一个基于Java的Web服务实现,它在早期为开发者提供了一种高效、轻量级的方式来创建和消费Web服务。这个"xfire框架jar包合集 大全"包含了不同版本的XFire核心库,这对于我们理解XFire的功能和历史演变至关...
使用XFire根据WSDL生成客户端代码,可以大大简化开发过程,因为它自动生成了与服务接口对应的Java类和代理。以下是具体步骤: 1. **安装和配置XFire**:首先,确保已经下载并安装了XFire库。你可以通过Maven或...
生成XFire客户端的过程主要是通过反向工程从Web服务的WSDL(Web Service Description Language)文件中自动生成Java客户端代码。WSDL文件定义了Web服务的接口、消息格式、操作和地址等信息。以下是一般步骤: 1. **...
XFire可以自动生成WSDL,它描述了服务的存在、操作、输入和输出格式。开发者可以通过服务类上的`@WebService`注解的`targetNamespace`、`serviceName`等属性来定制WSDL。 除了基本的SOAP服务,XFire还支持其他协议...
在IT行业中,Web服务是一种允许不同应用程序之间进行通信的技术,而`xfire`是一个流行的Java框架,用于构建和消费Web服务。本示例将详细解释如何利用xfire框架搭建一个包含SOAP Header身份验证和WS-Security身份验证...
### MyEclipse 8.0 GA 下使用 Xfire 框架开发 WebService 实例 #### 一、WebService 服务端开发步骤 ##### 1. 建立 WebService Project - 在 MyEclipse 中创建一个新的 Web Service 项目,命名为 ProjectName。 -...
XFire是一个古老的但功能强大的Java Web服务框架,它为开发者提供了简单、高效的接口来创建和消费Web服务。这篇博文将深入探讨如何搭建XFire框架并进行实际应用。 首先,我们来了解XFire的基本概念。XFire是Apache ...
XFire提供了生成WSDL文件的功能,允许开发者从Java类或者接口自动生成对应的WSDL定义,以便于服务的发布和消费。 在描述中提到"工作的地方不能上网更新",这意味着在离线环境下使用XFire插件生成WSDL文件。在这种...
- **自动代码生成**:XFire能够自动生成服务端和客户端的绑定代码,大大减少了开发时间。 - **WSDL支持**:XFire可以动态生成WSDL文档,描述Web Service的接口和绑定信息。 - **数据绑定**:XFire支持多种数据绑定...
WebService框架XFire是一款用于构建和消费Web服务的开源Java框架,它在早期的Web服务开发中扮演了重要角色。XFire是由Avalon项目发展而来,后来成为了CodeHaus组织的一部分,并最终演变为Apache CXF项目。理解XFire...
【标题】: "基于xfire技术框架的WebService完整源码及数据库备份" 涉及的知识点 在IT行业中,WebService是一种实现不同系统间数据交换的标准化方式,它允许应用程序通过网络进行通信,实现了分布式计算。Xfire是...
xfire框架用到的几乎全部jar包,包括:serializer.jar xalan.jar xalansamples.jar xercesImpl.jar xml-apis.jar xsltcapplet.jar xsltcbrazil.jar xsltcejb.jar xsltcservlet.jar
Xfire框架是一款基于Java的开源服务框架,专为构建和部署Web服务而设计。它提供了一种简单的方式来创建、发布和消费Web服务,使得开发者能够快速地实现SOA(Service-Oriented Architecture)架构。在MyEclipse10这样...
### Xfire框架的简单使用及Webservice开发 #### 一、XFire框架简介 XFire作为新一代的Webservice框架,自推出以来便以其简洁的API和对多项Webservice标准协议的支持而受到广泛关注。相较于传统的Axis框架,XFire...
这个压缩包“Android应用源码之在远程上传以及下载图片---XFire框架.zip”显然是一个示例项目,它利用了XFire框架来实现这些功能。XFire是一款轻量级的Java Web服务框架,它提供了SOAP和RESTful服务的支持。虽然...
XFire框架是一个轻量级的工具,专为简化这一过程而设计。这个压缩包包含的资源可以帮助开发者理解和使用XFire来处理图像的网络传输。 XFire框架的核心功能: 1. **图片上传**:XFire提供了简单易用的API,允许...
一旦WSDL文件被成功导入,XFire插件将自动生成与Web服务相关的客户端代码。这些代码通常包括接口定义、存根类和服务代理类等,可以直接用于调用Web服务。 #### 步骤四:测试和调用Web服务 最后,可以在Java项目中...