[英]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.