我正在通过消费一个WSDL和多个XSD文件来创建肥皂服务。XSD文件包含在我的WSDL中。我已经使用Maven尝试使用JAXW和CXF插件。解析WSDL时,两个插件都在抛出错误/异常。
以下是JAXWS的错误:
[错误]无效的WSDL:操作" Insertsubscriber":它的文档字段操作,消息部分必须参考模式元素声明
cxf死亡而没有投掷任何错误描述。
JXC框架从XSD文件创建类,但它们没有用,因为我必须手动创建端点,并且在我的WSDL中已经定义了类的链接。
我还拥有C GSOAP客户端,它使用可以创建肥皂服务的相同WSDL和XSD,但我想将服务迁移到Java应用程序。我如何解决上述问题?
WSDL摘要:
<wsdl:import namespace="MyDomain/mytypes" location="MyTypes1.xsd"/>
<xsd:complexType name="insertSubscriberRequest">
<xsd:sequence>
<xsd:element name="insertAddressList" type="mytypes:InsertAddressList"/>
</xsd:sequence>
</xsd:complexType>
<wsdl:message name="insertSubscriberRequest">
<wsdl:part name="insertSubscriberRequest" type="tns:insertSubscriberRequest"/>
</wsdl:message>
<!--wsdl operation-->
<wsdl:portType name="myService">
<wsdl:operation name="insertSubscriber">
<wsdl:input message="tns:insertSubscriberRequest"/>
<wsdl:output message="tns:insertSubscriberResponse"/>
</wsdl:operation>
</wsdl:portType>
<!--soap operation-->
<wsdl:operation name="insertSubscriber">
<soap:operation soapAction="MyDomain/mytypes/insertSubscriber"/>
<wsdl:input>
<soap:body use="literal" namespace="MyDomain/mytypes"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal" namespace="MyDomain/mytypes"/>
</wsdl:output>
</wsdl:operation>
来自mytypes1.xsd的摘要:
<xs:complexType name="InsertAddressList">
<xs:annotation>
<xs:documentation>Definition of a list of Account IDs for Insert operation</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="accountId" type="MyType2:sdsAccountId" minOccurs="10" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
来自myTypes2.xsd的摘要
<xs:simpleType name="sdsAccountId">
<xs:annotation>
<xs:documentation>Definition of Account ID parameter</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="26"/>
<xs:pattern value="([0..9]){1,26}"/>
</xs:restriction>
</xs:simpleType>
我验证了WSDL文件,并且有一个导入错误。实际上,它在WSDL:定义中两次导入XSD,然后在XSD:schema中导入XSD。从WSDL中删除导入:定义对我有用,
使用Wsimport我面临同一问题,但它正在与CXF一起使用。