2

我无法理解如何制作 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 更多的无用文件(如我所见)我试过。

问题

  • 是否有如何使用 Web 服务的一般准则?由于 WSDL 文件是外部的,因此它也可能会发生变化,因此我认为在 Maven 中自动完成这可能会很好(尽管如果 WSDL 突然发生变化会有其他副作用......)。

  • 如果 wsdl2code 是一个不错的选择,是否应该始终在目标目录中创建所有文件,以便
    在执行 mvn clean 时将它们删除)?

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

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

4

2 回答 2

3

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

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

于 2011-02-02T11:02:00.350 回答
1

你可以试试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>
于 2011-02-02T11:14:34.487 回答