WSDL消费 - 使用什么工具?

时间:2011-02-02 08:14:40

标签: java maven-2 wsdl wsdl2code

我无法理解如何创建Web服务客户端。 故事是我需要打电话给Web服务。当我理解它时,我需要以某种方式使用Web服务来获取正确的Web服务类。

我已经研究了很多方法来做到这一点。例如,我尝试使用脚本使用它们,然后只导入类。

然而,我的同事建议我尝试使用Maven-plugin wsdl2code,因为我们已经使用了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。

问题

  • 是否有一般指导原则 使用网络服务?自WSDL以来 文件是外部的,它也可以 改变,因此我想 完成这件事可能会很好 自动在Maven(虽然在那里 如果是,那将是其他副作用 WSDL突然改变了......)。

  • 如果wsdl2code是一个不错的选择,那么所有文件是否总是在target-catalouge中创建,所以
    执行mvn clean时它们被删除了吗?

  • 还有其他工具可能更合适吗?

更新/修改
通过使用例如JAX-WS wsimport,我得到了我想要的生成文件。 但是,通过在/ target-folder中创建这些,我想在同一个项目中访问它们以实际调用Web服务。这可能吗?

2 个答案:

答案 0 :(得分:3)

如果你有java-1.6,你可以(应该)使用jax-ws,它非常容易使用板载java工具。有一个很好的maven插件可以创建一个webservice客户端,可以在没有任何其他依赖项的情况下使用。看看http://jax-ws-commons.java.net/jaxws-maven-plugin/

有关详细演练,请参阅http://blogs.oracle.com/enterprisetechtips/entry/using_jax_ws_with_maven

答案 1 :(得分:1)

您可以尝试CXF wsdl2java plugin。此外,最好将生成的源存储在单独的源文件夹中以避免混乱。所以最后配置看起来像这样:

        <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>