2013-08-19 170 views
7

我想與具有基本身份驗證的一些SOAP Web服務進行交互,並且我有url,用戶名和密碼。現在我想在我的java代碼中使用這個Web服務,所以我需要爲它創建一個jar文件。從SOAP生成客戶端jar wsdl

我已經看到下面的網址,但不知道如果我正確地跟着它。 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

我已經下載軸從2-1.6.2 http://axis.apache.org/axis2/java/core/download.cgi(僅二進制分發)

我這是給客戶存根...我看到有人說與構建使用它。 xml,但我找不到build.xml ....請告訴我什麼我需要安裝設置Apache軸和螞蟻?螞蟻在這裏做什麼?

回答

7

Axis2支持多種方式來支持Web服務客戶端。最常見的方法記錄在here,涉及生成解析WSDL文件描述的SOAP消息的Java代碼。

以下答案描述了調用Web服務的多種方法。的最後部分說明了使用由Axis2的生成和編譯的類使用ANT Groovy腳本:

更多細節

中的WSDL2Java程序(使用Axis2捆紮)將產生一個ANT項目基於指定的WSDL文件:

$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代碼,你會發現匹配的WSDL文件中定義的XML模式類型的Java類,使它更易於序列化和反序列化SOAP消息。

「build.xml」文件包含編譯生成的java代碼的邏輯。

cd mydir 
ant 

當構建運行時,它會默認創建jar文件如下:(在other answer或見我的例子Groovy腳本)

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

這個jar文件,現在可以通過一個java列入該希望訪問Web服務。

9

Mark的答案很有用,但我更像是一個Maven傢伙,並且希望最終能夠實現輸出jar。

下面介紹如何使用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> 
+0

我不能編輯,因爲它會少於6個字符,但最終有什麼是pom.xml第一行缺少的x:「x」mlns:xsi =「http://www.w3 ..... –