如何解决DESCRIPTION必须只使用WSDL“import”语句来导入另一个WSDL?

时间:2012-05-24 11:12:50

标签: java web-services soap xsd wsdl

我正在撰写SOA/WSDL网络服务客户端。

当我使用它时:

 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是否正确地转换为它的对象Type?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

  

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

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

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

而是使用<wsdl:types><xsd:import>来导入XML架构定义。

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

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