Создание прокси-клиента веб-службы для HR-XML PositionOpening WSDL - PullRequest
0 голосов
/ 21 июня 2011

Я пытаюсь сгенерировать прокси-клиент веб-службы Java, используя Apache Axis2 для Открытие позиции WSDL , предоставленной HR-XML Consortium . Я использую wsdl2java инструмент командной строки для генерации прокси-клиента.

Команда:

wsdl2java -uri http://ns.hr-xml.org/schemas/org_hr-xml/3_1_1/Services/Web_Services/WSDL/PositionOpening.wsdl -d adb -o hrxml-positionopening

Наконец, я затем пытаюсь преобразовать сгенерированные классы в JAR, вызывая ant jar.all. К сожалению, он не может правильно скомпилировать и выдает некоторые ошибки. Я не знаю, каковы причины. Существует более 100 ошибок, но я показал ниже первые 3 ошибки, которые появляются вверху.

E:\axis2-1.5.4\bin\hrxml-positionopening>ant jar.all
Buildfile: build.xml

init:

pre.compile.test:
     [echo] Stax Availability= true
     [echo] Axis2 Availability= true

compile.src:
    [javac] Compiling 3 source files to E:\axis2-1.5.4\bin\hrxml-positionopening\build\classes
    [javac] E:\axis2-1.5.4\bin\hrxml-positionopening\src\org\hr_xml\www\_3\ws\PositionOpening_ServiceStub.java:315862: 'else' without 'if'
    [javac]                                         else
    [javac]                                         ^
    [javac] E:\axis2-1.5.4\bin\hrxml-positionopening\src\org\hr_xml\www\_3\ws\PositionOpening_ServiceStub.java:315964: 'else' without 'if'
    [javac]                              } else {
    [javac]                                ^
    [javac] E:\axis2-1.5.4\bin\hrxml-positionopening\src\org\hr_xml\www\_3\ws\PositionOpening_ServiceStub.java:315718: 'try' without 'catch' or 'finally'
    [javac]             try {
    [javac]             ^

Может кто-нибудь пролить свет на это? Моя цель - преобразовать этот WSDL открытия позиции в JAR-файл, чтобы я мог использовать / вызывать функции непосредственно из моего приложения.

EDIT:

Тем временем я даже пытался использовать wsimport инструмент JAX-WS, но он не работает в самой команде.

E:\jdk1.6.0\bin>wsimport.exe -d hrxml-positionopening http://ns.hr-xml.org/schemas/org_hr-xml/3_1_1/Services/Web_Services/WSDL/PositionOpening.wsdl
error: Property "Type" is already defined.
  line 1473 of http://ns.hr-xml.org/schemas/org_openapplications_platform/1_1/Common/OAGi/Components/Components.xsd
error: The following location is relevant to the above error
  line 1480 of http://ns.hr-xml.org/schemas/org_openapplications_platform/1_1/Common/OAGi/Components/Components.xsd
error: com.sun.istack.internal.SAXParseException2: The following location is relevant to the above error

Ответы [ 2 ]

1 голос
/ 05 июля 2011

Мне удалось найти причину сбоя с помощью wsimport инструмента JAX-WS.Из документации HR-XML и Java причина и способ ее обхода объяснены, как показано ниже:

JAX-WS не может обработать предоставленные WS-LL HR-XML и XSD, предоставленныеHR ‐ XML Консорциум.Нет ошибок в схемах или определениях веб-служб, но используемые шаблоны и структуры каталогов не поддерживаются обработчиком JAX.Это ограничение JAX-WS, которое, будем надеяться, будет исправлено в будущих версиях.Чтобы обойти эти проблемы, необходимо внести следующие изменения:

Тип атрибута в файле org_openapplications_platform \ 1_1 \ Common \ OAGi \ Components \ components.xsd должен быть переименован в для генерации кода.

Однако, у меня все еще нет идеи / ответа о том, почему это не удалось с Apache Axis2 при попытке собрать JAR с использованием ant.

0 голосов
/ 25 ноября 2014

Мне удалось заставить его работать, указав этот файл привязки в моем вызове wsimport "wsimport -b binding.xml ..."

(Обратите внимание, что у меня были схемы на моем локальном компьютере, поэтому schemaLocationдля Components.xsd придется изменить в XML ниже)

<jxb:bindings 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
    version="2.1">

    <!-- Raise theEnumMemberSizeCap limit -->
    <jxb:bindings>
        <jxb:globalBindings typesafeEnumMaxMembers="2000"/>
    </jxb:bindings>


    <jxb:bindings schemaLocation="DataQuery_wsdl/Components.xsd" version="1.0">
        <!-- Customise the package name -->
        <!--<schemaBindings>
            <package name="com.example.schema"/>
        </schemaBindings>-->

        <!-- rename the value element -->
        <jxb:bindings node="//xsd:complexType[@name='ContactType']">
            <jxb:bindings node=".//xsd:attribute[@name='type']">
                <jxb:property name="TypeAttribute"/>
            </jxb:bindings>
        </jxb:bindings>

        <jxb:bindings node="//xsd:complexType[@name='DocumentReferenceType']">
            <jxb:bindings node=".//xsd:element[@ref='Type']">
                <jxb:property name="TypeAttribute"/>
            </jxb:bindings>
        </jxb:bindings>

        <jxb:bindings node="//xsd:complexType[@name='ClassificationType']">
            <jxb:bindings node=".//xsd:attribute[@name='type']">
                <jxb:property name="TypeAttribute"/>
            </jxb:bindings>
        </jxb:bindings>

        <jxb:bindings node="//xsd:complexType[@name='ImageAttachmentType']">
            <jxb:bindings node=".//xsd:element[@ref='Type']">
                <jxb:property name="TypeAttribute"/>
            </jxb:bindings>
        </jxb:bindings>

        <jxb:bindings node="//xsd:complexType[@name='OpenAttachmentType']">
            <jxb:bindings node=".//xsd:element[@ref='Type']">
                <jxb:property name="TypeAttribute"/>
            </jxb:bindings>
        </jxb:bindings>

        <jxb:bindings node="//xsd:complexType[@name='SpecificationType']">
            <jxb:bindings node=".//xsd:element[@ref='Type']">
                <jxb:property name="TypeAttribute"/>
            </jxb:bindings>
        </jxb:bindings>

        <jxb:bindings node="//xsd:complexType[@name='EventType']">
            <jxb:bindings node=".//xsd:element[@ref='Type']">
                <jxb:property name="TypeAttribute"/>
            </jxb:bindings>
        </jxb:bindings>

        <jxb:bindings node="//xsd:complexType[@name='QualifiedAmountType']">
            <jxb:bindings node=".//xsd:element[@ref='Type']">
                <jxb:property name="TypeAttribute"/>
            </jxb:bindings>
        </jxb:bindings>

        <jxb:bindings node="//xsd:complexType[@name='TermABIEType']">
            <jxb:bindings node=".//xsd:element[@ref='Type']">
                <jxb:property name="TypeAttribute"/>
            </jxb:bindings>
        </jxb:bindings>

        <jxb:bindings node="//xsd:complexType[@name='DimensionABIEType']">
            <jxb:bindings node=".//xsd:element[@ref='Type']">
                <jxb:property name="TypeAttribute"/>
            </jxb:bindings>
        </jxb:bindings>

        <jxb:bindings node="//xsd:complexType[@name='CurrencyExchangeBaseType']">
            <jxb:bindings node=".//xsd:element[@ref='Type']">
                <jxb:property name="TypeAttribute"/>
            </jxb:bindings>
        </jxb:bindings>

        <jxb:bindings node="//xsd:complexType[@name='ProjectABIEType']">
            <jxb:bindings node=".//xsd:attribute[@name='type']">
                <jxb:property name="TypeAttribute"/>
            </jxb:bindings>
        </jxb:bindings>

        <jxb:bindings node="//xsd:complexType[@name='AddressBaseType']">
            <jxb:bindings node=".//xsd:element[@ref='Type']">
                <jxb:property name="TypeAttribute"/>
            </jxb:bindings>
        </jxb:bindings>

        <jxb:bindings node="//xsd:complexType[@name='TaxABIEType']">
            <jxb:bindings node=".//xsd:element[@ref='Type']">
                <jxb:property name="TypeAttribute"/>
            </jxb:bindings>
        </jxb:bindings>

        <jxb:bindings node="//xsd:complexType[@name='AllowanceChargeABIEType']">
            <jxb:bindings node=".//xsd:element[@ref='Type']">
                <jxb:property name="TypeAttribute"/>
            </jxb:bindings>
        </jxb:bindings>

        <jxb:bindings node="//xsd:complexType[@name='LocationABIEType']">
            <jxb:bindings node=".//xsd:element[@ref='Type']">
                <jxb:property name="TypeAttribute"/>
            </jxb:bindings>
        </jxb:bindings>

    </jxb:bindings>   


</jxb:bindings>
...