1

我正在编写一个SOA/WSDLWeb 服务客户端。

当我使用它时:

 Service service = Service.create(this.url, qname);
 Score score = service.getPort(Score.class);

我总是收到这个错误:

24.05.2012 12:59:54 com.sun.xml.ws.wsdl.parser.RuntimeWSDLParser parseWSDL
WARNUNG: Import of http://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?xsd=2 is violation of BP 1.1 R2001. Proceeding with a warning.
R2001 A DESCRIPTION MUST only use the WSDL "import" statement to import another WSDL description.

那么 url 和 qname 正确转换为其对象类型的错误是什么?

4

2 回答 2

2

该错误很可能不在您的代码中,而是在您正在访问的服务的 WSDL 中。该错误来自您的客户端 WSDL 解析器的验证器。我的猜测是,在 WSDL 的类型定义段内有一个使用该<xsd:import>指令的内联 XML Schema,这在 wsdl 定义的上下文中是非法的。

于 2012-05-24T11:19:52.307 回答
1

描述必须只使用 WSDL “import” 语句来导入另一个 WSDL 描述

因此,如果您将另一个 WSDL 导入到一个 WSDL 中,那么<wsdl:import>是有效标记。但是,如果您使用此标记来导入 XML 模式定义,那么您将在运行时收到提及的警告。例如无效:

<wsdl:import namespace="com.my.schema/v2" location="services.xsd"/>

相反,使用<wsdl:types>and<xsd:import>来导入您的 XML 模式定义。

<wsdl:types>
  <xsd:schema>
    <xsd:import namespace="com.my.schema/v2" schemaLocation="services.xsd"/>
  </xsd:schema>
</wsdl:types>

它对我有用,所以想分享!

于 2018-02-15T07:20:38.077 回答