Создание сервисов мыла и классов POJO из xsd и wsdl - PullRequest
0 голосов
/ 07 июля 2019

Я создаю сервис мыла, используя один wsdl и несколько файлов xsd.Файлы xsd включены в мой wsdl.Я пробовал с плагинами jaxws и cxf, используя maven.Оба плагина выдают ошибку / исключение при синтаксическом анализе wsdl.

ниже приведена ошибка от jaxws:

[ОШИБКА] Недопустимая wsdl: операция "insertSubscriber": ее документно-буквальная операция,часть сообщения должна ссылаться на объявление элемента схемы

CXF умирает, не выдавая никакого описания ошибки.

Каркас jxc создает классы из файлов xsd, но они бесполезны, потому что мне нужно создавать конечные точкивручную, и связывание классов уже определено в моем wsdl.

У меня также есть клиент C ++ gsoap, который использует те же wsdl и xsds, с помощью которых я могу создать мой сервис мыла, но я хочу перенести свой сервис на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>

1 Ответ

0 голосов
/ 23 июля 2019

Я проверил файл WSDL, и произошла ошибка импорта. На самом деле, он импортировал xsds два раза, один раз в определениях wsdl: и один раз в схеме xsd:. удаление импорта из wsdl: определения работали для меня,

С wsimport я столкнулся с той же проблемой, но она работает с cxf.

...