我们有一个工作wsdl2java,但xsd缺少xmlns定义和targetNamespace定义。添加wsdl2java然后打破这些错误
<<< ERROR!
Part <parameter> in Message <{enrollment}enrollmentResultRequestMessage> referenced Type <Enrollment> can not be found in the schemas
Part <parameter> in Message <{enrollment}enrollmentRequestMessage> referenced Type <Enrollment> can not be found in the schemas
我做的只是改变
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
到
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://yyy.com/enrollment" targetNamespace="http://yyy.com/enrollment">
我将cxf升级到2.5.2仍然无法正常工作。任何人都知道为什么这不起作用?我们需要开始使用规范的xsds,并且不希望每次都要删除命名空间。有什么想法吗?
在这种情况下我们的错误是什么(虽然它适用于xsd的第一个版本)...
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:tns="enrollment2"
xmlns:en="http://yyy.com/enrollment"
targetNamespace="enrollment2">
<wsdl:import namespace="http://yyy.com/enrollment" location="enrollment.xsd"/>
<wsdl:types>
<xs:schema targetNamespace="enrollment2" elementFormDefault="qualified"/>
</wsdl:types>
感谢, 迪安
答案 0 :(得分:3)
您需要使用xsd:import作为wsdl:types / xs:schema的子级来包含xsd类型。
<wsdl:types>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:import namespace="http://yyy.com/enrollment" location="enrollment.xsd">
</xsd:schema>
</wsdl:types>
话虽这么说,wsdl:import是导入另一个名称与你的命名空间不同的wsdl定义。