繁体   English   中英

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

[英]What is the difference between ?wsdl and ?singleWsdl parameters

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

http://my.amazonaws.com:8000/webservice/?wsdl
http://my.amazonaws.com:8000/webservice/?singleWsdl

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

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

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

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

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

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

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

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

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

因此有一些框架可以生成一个完整的WSDL,一些可以通过导入生成它,一些允许您指定实际的物理文件,一些支持?singleWsdl约定,一些不支持。 与这个问题无关,但只是为了完成,还有一个?wsdl2约定,让你得到一个WSDL 2.0定义( ?wsdl给你一个WSDL 1.1)。 一些框架支持?wsdl2 ,有些框架不支持。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM