从XSD和WSDL生成SOAP服务和POJO类



我正在通过消费一个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一起使用。

最新更新