我正在撰写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?
答案 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>
它对我有用,所以想分享!!