?wsdl和?singleWsdl参数之间有什么区别?

Wan*_*fan 26 wsdl axis2 web-services cxf jax-ws

我的消息传递提供程序为我提供了两种不同的WSDL.

http://my.amazonaws.com:8000/webservice/?wsdl
http://my.amazonaws.com:8000/webservice/?singleWsdl
Run Code Online (Sandbox Code Playgroud)

第一个是嵌入式 WSDL.不能使用它来生成WSDL2java包,也不能使用JAX-WS来创建连接.

第二个是单个 WSDL.它可以使用CXF 3.0的WSDL2java生成Java包,并可以使用JAX-WS创建连接.它工作得很好.

请告诉我这两种WSDL之间的区别.

Bog*_*dan 35

在不知道这些链接返回的情况下我们只能猜测,但这里有一些可能对您有帮助的细节....

使用?wsdlget获取Web服务端点作为WSDL文件.WSDL可以在运行时由框架基于Web服务框架代码生成,也可以是服务器在指定URL参数时发回的实际物理文件.

WSDL包含一个XML Schema,可以在WSDL本身内部指定,也可以作为WSDL导入的单独文件指定.现在出现问题......

一些Web服务存根生成器只能处理完整的WSDL,其中包含Schema.如果WSDL导入其他文件,则工具无法解析导入并失败.这使得Web服务难以使用,因为客户端在创建存根以与Web服务交互时遇到问题.正因如此,服务供应商或者是用一个实际的WSDL向响应?wsdl请求或开始写各种黑客和插件,使Web服务生成完整的WSDL.

但是一些提供商甚至没有打扰,因此客户端必须编写hack来解析WSDL,或者他们必须下载所有文件,将它们手动组装到单个文件中并使用它.

随着时间的推移,人们认为这是一个问题,框架适合提供完整的WSDL,而不是一个带有导入的WSDL.但这又产生了另一个问题.更改?wsdlURL返回的内容可能会破坏围绕它创建的所有黑客攻击以修复导入问题.出于这个原因,选择另一个约定来返回完整的WSDL : ?singleWsdl.

因此,有产生一个完整的WSDL,一些拥有进口产生了,一些允许你指定一个实际的物理文件的框架,一些支持的?singleWsdl惯例,一些则没有.与此问题无关,但只是为了完成,还有一个?wsdl2约定,让您成为WSDL 2.0定义(?wsdl获取WSDL 1.1).有些框架支持?wsdl2,有些则不支持.

我的猜测是你的问题是由Schema导入引起的,但是没有WSDL本身我无法分辨.希望至少这些细节可以帮助您更好地识别问题.