Как связать несколько файлов WSDL? - PullRequest
0 голосов
/ 03 мая 2019

Я работаю над обновлением услуг, предлагаемых определенным клиентом, через файлы WSDL.Эти сервисы были предложены в одном файле WSDL в предыдущей версии, для которого у меня был один файл bindings.xml для обработки части настройки.Теперь эти услуги предлагаются в нескольких файлах WSDL (всего 9), которые имеют внутренние ссылки между собой.Я думаю, что мне понадобится несколько файлов привязки для обработки настроек.Однако wsimport, похоже, не работает с этим подходом.

Я попытался:

  1. изменить существующее местоположение атрибута wsdlLocation, чтобы оно указывало на один из последних файлов WSDL, который требует настройки;другие файлы также должны быть обработаны для настройки, как мне сделать это с одним атрибутом wsdlLocation в файле bindings.xml?

  2. Добавление нескольких файлов привязки с атрибутом wsdlLocation внутри каждого набора вукажите на соответствующий ему файл wsdl, и в этом случае я получаю ниже ошибку компиляции, поскольку существует несоответствие между файлами xml и файлами wsdl.

    3. Попытался разделить файлы wsdl на их отдельные папки и скомпилировать их по отдельности, чтоконечно не работал из-за ссылок на интернет.Все, что должно быть выполнено в одной цели, я думаю.

pom.xml:


<plugin>
            <groupId>org.jvnet.jax-ws-commons</groupId>
            <artifactId>jaxws-maven-plugin</artifactId>
            <version>${jaxws-maven-plugin.version}</version>
            <executions>
                <execution>
                    <id>etc</id>
                    <goals>
                        <goal>wsimport</goal>
                    </goals>
                    <configuration>
                        <sourceDestDir>${project.build.directory}/generated-sources/jaxws-wsimport</sourceDestDir>
                        <keep>true</keep>
                        <verbose>true</verbose>
                        <wsdlDirectory>src/main/resources/META-INF/wsdl</wsdlDirectory>
                        <wsdlFiles>

                            <wsdlFile>Service1.wsdl</wsdlFile>

                            <wsdlFile>Service2.wsdl</wsdlFile>

                        </wsdlFiles>
                        <bindingDirectory>src/main/resources/META-INF/wsdl</bindingDirectory>
                        <bindingFiles>
                            <bindingFileService1bindings.xml</bindingFile>
                            <bindingFile>Service2bindings.xml</bindingFile>

                        </bindingFiles>
                        <quiet>true</quiet>
                        <packageName>com.etc.sim.impl</packageName>
                        <staleFile>${project.build.directory}/etc.done</staleFile>
                        <xjcArgs>
                            <xjcArg>-npa</xjcArg>
                        </xjcArgs>
                    </configuration>


                </execution>
            </executions>
        </plugin>
        <plugin>

Service1bindings.xml

<jaxws:bindings xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
    xmlns:jaxws="http://java.sun.com/xml/ns/jaxws" wsdlLocation="Service1.wsdl">

    <jaxws:bindings node="wsdl:definitions/wsdl:portType[@name='ServiceMgmt']/wsdl:operation[@name='addEventsToPackage']">
        <jaxws:parameter part="wsdl:definitions/wsdl:message[@name='addEventsToPackageRequest']/wsdl:part[@name='package']"
            childElementName="package" name="paramPackage" />
    </jaxws:bindings>

    <jaxws:bindings node="wsdl:definitions/wsdl:portType[@name='ServiceMgmt']/wsdl:operation[@name='removeEventsFromPackage']">
        <jaxws:parameter
            part="wsdl:definitions/wsdl:message[@name='removeEventsFromPackageRequest']/wsdl:part[@name='package']"
            childElementName="package" name="paramPackage" />
    </jaxws:bindings>
</jaxws:bindings>

Service2bindings.xml

<jaxws:bindings xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
    xmlns:jaxws="http://java.sun.com/xml/ns/jaxws" wsdlLocation="service2.wsdl">

    <jaxws:bindings node="wsdl:definitions/wsdl:portType[@name='Service2Mgmt']/wsdl:operation[@name='addEventsToPackage']">
        <jaxws:parameter part="wsdl:definitions/wsdl:message[@name='addEventsToPackageRequest']/wsdl:part[@name='package']"
            childElementName="package" name="paramPackage" />
    </jaxws:bindings>

    <jaxws:bindings node="wsdl:definitions/wsdl:portType[@name='Service2Mgmt']/wsdl:operation[@name='removeEventsFromPackage']">
        <jaxws:parameter
            part="wsdl:definitions/wsdl:message[@name='removeEventsFromPackageRequest']/wsdl:part[@name='package']"
            childElementName="package" name="paramPackage" />
    </jaxws:bindings>
</jaxws:bindings>

The build with mvn clean install gives below error all the time: 

*****************************************************************************
Processing: file:sim/src/main/resources/META-INF/wsdl/Service2.wsdl
[INFO] jaxws:wsimport args: [-keep, -s, target/generated-sources/jaxws-wsimport, -verbose, -encoding, UTF-8, -Xnocompile, -p, com.etc.sim.impl, -quiet, -B-npa, -b, sim/src/main/resources/META-INF/wsdl/Service1bindings.xml, -b, sim/src/main/resources/META-INF/wsdl/service2binding.xml, file:/opt/code/iap-test/tools/iap-simulators/vcas-sim/src/main/resources/META-INF/wsdl/service1.wsdl]
[ERROR]     "file:-sim/src/main/resources/META-INF/wsdl/Service2.wsdl" is not a part of this compilation. Is this a mistake for "file:/opt/code/iap-test/tools/iap-simulators/vcas-sim/src/main/resources/META-INF/wsdl/Service1.wsdl"?
  line 4 of file:sim/src/main/resources/META-INF/wsdl/Service2binding.xml

    Failed to parse the WSDL.
******************************************************************************
...