Web services wsdl参数和单一wsdl参数之间有什么区别

Web services wsdl参数和单一wsdl参数之间有什么区别,web-services,wsdl,cxf,jax-ws,axis2,Web Services,Wsdl,Cxf,Jax Ws,Axis2,我的消息传递提供程序提供了两种不同类型的WSDL供我使用 http://my.amazonaws.com:8000/webservice/?wsdl http://my.amazonaws.com:8000/webservice/?singleWsdl 第一个是嵌入的WSDL。无法使用它生成WSDL2java包和 无法使用JAX-WS创建连接 第二个是一个单一的WSDL。它可以使用CXF3.0的WSDL2java生成Java包,并可以使用JAX-WS创建连接。它工作得很好 请让我知道这两种ws

我的消息传递提供程序提供了两种不同类型的WSDL供我使用

http://my.amazonaws.com:8000/webservice/?wsdl
http://my.amazonaws.com:8000/webservice/?singleWsdl
第一个是嵌入的WSDL。无法使用它生成
WSDL2java
包和 无法使用JAX-WS创建连接

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


请让我知道这两种wsdl之间的区别。

不知道这些链接返回的内容,我们只能猜测,但这里有一些细节可能会帮助您

为web服务端点添加
?wsdl
将为您提供一个wsdl文件。WSDL可以由框架在运行时基于web服务框架代码生成,也可以是服务器在指定URL参数时发送回的实际物理文件

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

一些web服务存根生成器只能处理完整的WSDL,其中包含模式。如果WSDL导入其他文件,则工具无法解析导入并失败。这使得web服务难以使用,因为客户端在创建存根以与web服务交互时遇到问题。如此之多以至于服务提供者要么使用实际的WSDL来响应
?WSDL
请求,要么开始编写各种黑客和插件,使web服务生成完整的WSDL

但是一些提供商甚至不费心,所以客户端必须编写解析WSDL的黑客程序,或者他们必须下载所有文件,手动将它们组装成一个文件并使用它

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

因此,有些框架生成完整的WSDL,有些框架通过导入生成,有些框架允许您指定实际的物理文件,有些框架支持
?singleWsdl
约定,有些框架不支持。与这个问题无关,但只是为了补充说明,还有一个
?wsdl2
约定为您提供WSDL 2.0定义(
?WSDL
为您提供WSDL 1.1)。有些框架支持wsdl2,有些不支持


我猜您遇到的问题是由模式导入引起的,但是如果没有WSDL本身,我就说不出来了。希望这些细节至少能帮助您更好地识别问题。

谢谢您的回答Bogdan!我错了吗?或者根据这个答案,应该假设?singleWsdl将是首选?@Veverke:当服务和客户端使用相同的技术堆栈时,大多数情况下并不重要(例如,svcutil可以为WCF服务处理任何形式的WSDL内容)。当使用跨技术时,
?singleWsdl
选项是最安全的(假设服务支持它)@Bogdan:Mate您完全不需要知道这些URL必须回答这个查询。这对我来说也是同样的问题,当我们的一个客户机使用wsdl时,单wsdl工作,而wsdl不适用于我的WCF服务。你的答案虽然被接受,但一开始就足够懦弱,因为它是关于概念,而不是内在的东西。你可以选择一个小型的wcf服务,你也会得到同样的服务(从4.5版开始),你可以解释,伙计