从SOAP WSDL生成客户端jar包

9
我正在尝试与一些具有基本认证的SOAP Web服务进行交互,我拥有URL、用户名和密码。现在我想在我的Java代码中使用这个Web服务,因此我需要为它创建一个JAR文件。
我已经看过下面的网址,但不确定是否正确地遵循了它。 http://axis.apache.org/axis2/java/core/docs/userguide-creatingclients.html#choosingclient http://javasourcecodeetc.blogspot.com/2011/07/convert-wsdl-to-java-for-calling-soap.html 我从以下链接下载了axis 2-1.6.2 http://axis.apache.org/axis2/java/core/download.cgi(仅二进制分发)。

我有一个客户端存根,这是给我的...我看到有人说要与build.xml一起使用,但我找不到任何build.xml....请告诉我需要安装哪些内容来设置Apache Axis和Ant?Ant在这里做什么?

2个回答

12

马克的答案有效,但我更喜欢Maven,并希望最终使输出jar文件成为Maven。

以下是如何使用Maven完成此操作。

  1. 将WSDL下载到目录中(例如mydir/MyWsdl.wsdl)。
  2. 创建一个pom.xml文件(如下所示)。
  3. 运行mvn package

这就是你最终的结果

└── mydir
    ├── MyWsdl.wsdl
    ├── pom.xml
    └── target (add this dir to .gitignore)
        ├── generated-sources
        ├── mywsdl-0.1.0-SNAPSHOT.jar
        ├── mywsdl-0.1.0-SNAPSHOT-sources.jar
        └── mywsdl-0.1.0-SNAPSHOT-javadoc.jar

还有pom.xml文件的来源

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.example</groupId>
  <artifactId>mywsdl</artifactId>
  <version>0.1.0-SNAPSHOT</version>
  <name>My WSDL client</name>
  <build>
    <plugins>
      <!-- Generates JAVA source files from the WSDL -->
      <plugin>
        <groupId>org.apache.axis2</groupId>
        <artifactId>axis2-wsdl2code-maven-plugin</artifactId>
        <version>1.6.2</version>
        <executions>
          <execution>
            <goals>
              <goal>wsdl2code</goal>
            </goals>
            <configuration>
              <packageName>com.example</packageName>
              <wsdlFile>MyWsdl.wsdl</wsdlFile>
              <!-- TODO: Update this file with new WSDL versions -->
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <executions>
          <execution>
            <id>attach-sources</id>
            <goals>
              <goal>jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <executions>
          <execution>
            <id>attach-javadocs</id>
            <goals>
              <goal>jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  <dependencies>
    <dependency>
      <groupId>org.apache.axis2</groupId>
      <artifactId>axis2</artifactId>
      <version>1.6.2</version>
    </dependency>
    <dependency>
      <groupId>org.apache.axis2</groupId>
      <artifactId>axis2-adb</artifactId>
      <version>1.6.2</version>
    </dependency>
    <dependency>
      <groupId>org.apache.ws.commons.axiom</groupId>
      <artifactId>axiom-api</artifactId>
      <version>1.2.14</version>
    </dependency>
    <dependency>
      <groupId>org.apache.ws.commons.axiom</groupId>
      <artifactId>axiom-impl</artifactId>
      <version>1.2.14</version>
    </dependency>
  </dependencies>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
</project>

我无法进行编辑,因为 pom.xml 文件的第一行少了一个“x”: "x"mlns:xsi="http://www.w3..... - Gary SEBASTIANI

7
Axis2支持多种方式来支持Web服务客户端。最常见的方法在此处有记录,并且涉及生成Java代码,解析由WSDL文件描述的SOAP消息。
下面的答案描述了调用Web服务的几种方法。最后一部分描述了使用由Axis2生成并使用ANT编译的类的Groovy脚本:

更多细节

wsdl2java程序(与Axis2捆绑在一起)将根据指定的WSDL文件生成一个基于ANT的项目:
$AXIS2_HOME/bin/wsdl2java.sh -d adb -s -o mydir -uri http://www.xmlme.com/WSShakespeare.asmx?WSDL

这将生成以下文件:
└── mydir
    ├── build.xml
    └── src
        └── com
            └── xmlme
                └── webservices
                    └── ShakespeareStub.java

如果您查看生成的Java代码,您会发现Java类与WSDL文件中定义的XML模式类型相匹配,使得序列化和反序列化SOAP消息更加简单。

"build.xml"文件包含编译生成的Java代码的逻辑。

cd mydir
ant

当构建运行时,默认会创建以下jar文件:

└── mydir
    ├── build
    │   ├── classes
    │   │   └── ..
    │   │       ..
    │   └── lib
    │       └── Shakespeare-test-client.jar
    ├── build.xml
    └── src
        └── com
            └── xmlme
                └── webservices
                    └── ShakespeareStub.java

现在,这个jar文件可以被Java应用程序(或者查看我在其他答案中提到的Groovy脚本示例)引入,以便访问Web服务。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接