WSDL потреблять - какой инструмент использовать? - PullRequest
2 голосов
/ 02 февраля 2011

У меня проблемы с пониманием того, как сделать клиент веб-службы.История в том, что мне нужно позвонить в веб-сервис.Как я понимаю, мне нужно как-то использовать веб-сервис, чтобы получить правильные классы веб-сервиса.

Я исследовал множество способов сделать это.Например, я попытался использовать их с помощью скрипта, а затем просто импортировать классы.

Однако мой коллега порекомендовал мне попробовать использовать wsdl2code Maven-plugin, так как мы уже используем Maven-2.Делать это работает, но создает много ненужных файлов, как я это вижу.Я добавил следующее в мой файл pom.xml:

<plugin>
    <groupId>org.apache.axis2</groupId>
    <artifactId>axis2-wsdl2code-maven-plugin</artifactId>
    <version>1.4</version>
     <executions>
         <execution>
            <goals>
                <goal>wsdl2code</goal>
            </goals>
            <configuration>
                <packageName>ws.client.test</packageName>
                <wsdlFile>http://localhost:8088/test?WSDL</wsdlFile>
                <databindingName>xmlbeans</databindingName>
                <outputDirectory>target/ws/test</outputDirectory>
            </configuration>
         </execution>
      </executions>
</plugin>

Это создает файлы успешно, но, как уже было сказано, есть также много ненужных файлов (xmlsoap / schemas / soap / encoding / ...) или, по крайней мере, намного больше файлов для неиспользования (как я вижу это), чем другие WSDLconsume, которые я пытался.

Вопросы

  • IsЕсть ли общие рекомендации, как использовать веб-сервис?Поскольку файл WSDL является внешним, он также может меняться, и поэтому я подумал, что было бы хорошо, если бы это делалось автоматически в Maven (хотя были бы другие побочные эффекты, если бы WSDL внезапно изменился ...).

  • Если wsdl2code является хорошим выбором, должны ли все файлы всегда создаваться в target-catalouge так, чтобы
    удалялись при выполнении mvn clean)?

  • Есть ли другой инструмент, который может подойти лучше?

Обновление / редактирование
Используя, например, JAX-WS wsimport, я получаю сгенерированные файлычто я желаю.Однако, создав их в / target-folder, я хочу получить доступ к ним в том же проекте, чтобы фактически вызвать веб-сервис.Это возможно?

Ответы [ 2 ]

3 голосов
/ 02 февраля 2011

Если у вас есть java-1.6, вы можете (должны) использовать jax-ws, это очень легко с помощью встроенных инструментов java. Есть хороший плагин maven, который создаст клиент веб-сервиса, который можно использовать без каких-либо дополнительных зависимостей. Взгляните на http://jax -ws-commons.java.net / jaxws-maven-plugin /

См. http://blogs.oracle.com/enterprisetechtips/entry/using_jax_ws_with_maven для подробного прохождения.

1 голос
/ 02 февраля 2011

Вы можете попробовать CXF wsdl2java плагин . Также рекомендуется хранить сгенерированный источник в отдельной папке с исходным кодом, чтобы избежать путаницы. Итак, наконец, конфигурации выглядят так:

        <plugin>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-codegen-plugin</artifactId>
            <version>2.3.0</version>
            <executions>
                <execution>
                    <id>generate-sources</id>
                    <phase>generate-sources</phase>
                    <configuration>
                        <sourceRoot>src/main/generated</sourceRoot>
                        <wsdlOptions>
                            <wsdlOption>
                                <wsdl>src/main/resources/your-service.wsdl</wsdl>
                            </wsdlOption>
                        </wsdlOptions>
                    </configuration>
                    <goals>
                        <goal>wsdl2java</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <artifactId>maven-clean-plugin</artifactId>
            <version>2.4.1</version>
            <executions>
                <execution>
                    <id>auto-clean</id>
                    <phase>initialize</phase>
                    <goals>
                        <goal>clean</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <filesets>
                    <fileset>
                        <directory>src/main/generated</directory>
                        <includes>
                            <include>**/*.java</include>
                        </includes>
                        <followSymlinks>false</followSymlinks>
                    </fileset>
                </filesets>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <version>1.5</version>
            <executions>
                <execution>
                    <id>add-source</id>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>add-source</goal>
                    </goals>
                    <configuration>
                        <sources>
                            <source>src/main/generated</source>
                        </sources>
                    </configuration>
                </execution>
            </executions>
        </plugin>
...