2013-08-19 5 views
7

Ich versuche, mit einigen SOAP-Web-Service zu interagieren, die die grundlegende Authentifizierung hat und ich habe die URL, Benutzername und Passwort. Jetzt möchte ich diesen Web-Service in meinem Java-Code verwenden und so muss ich eine JAR-Datei dafür erstellen.Generierung Client-Jar von SOAP WSDL

Ich habe die folgenden URLs aber nicht sicher, ob ich es richtig befolgt habe. 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

Ich habe Achse heruntergeladen 2-1.6.2 von http://axis.apache.org/axis2/java/core/download.cgi (nur binäre Distribution)

ich den Client-Stub haben, die gegeben wurde ... Ich sehe sagen die Leute es zu verwenden, um mit zu bauen. xml, aber ich konnte build.xml nirgendwo finden .... Bitte sagen Sie mir, was ich alles installieren muss, um Apache Achse und Ameise einzurichten? Was macht die Ameise hier?

Antwort

7

Axis2 unterstützt verschiedene Möglichkeiten zur Unterstützung von Web-Service-Clients. Der am häufigsten verwendete Ansatz ist dokumentiert here und involviert das Generieren von Java-Code, der die SOAP-Nachricht analysiert, die von der WSDL-Datei beschrieben wird.

Die folgende Antwort beschreibt eine Reihe von Möglichkeiten zum Aufrufen eines Webdienstes. Der letzte Teil beschreibt ein starkes Skript, das die Klassen, die von Axis2 verwendet und zusammengestellt ANT mit:

Weitere Einzelheiten

Das wsdl2java Programm (gebündelt mit Axis2) einen ANT erzeugen Projekt auf der angegebenen WSDL-Datei basiert:

$AXIS2_HOME/bin/wsdl2java.sh -d adb -s -o mydir -uri http://www.xmlme.com/WSShakespeare.asmx?WSDL 

Dadurch werden die folgenden Dateien erzeugen:

└── mydir 
    ├── build.xml 
    └── src 
     └── com 
      └── xmlme 
       └── webservices 
        └── ShakespeareStub.java 

Wenn Sie die generierte Java-Code überprüfen Sie Java-Klassen entdecken werden, die die XML-Schema-Typen definiert in der WSDL-Datei übereinstimmen, ist es einfacher zu serialisieren und deserialisieren SOAP-Nachrichten zu machen.

Die Datei "build.xml" enthält die Logik, mit der der generierte Java-Code kompiliert wird.

cd mydir 
ant 

Wenn der Build läuft wird es standardmäßig jar-Datei erstellen, wie folgt:

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

Diese JAR-Datei kann nun durch ein Java enthalten sein (oder mein Beispiel groovy Skript im other answer sehen), dass möchte auf den Webservice zugreifen.

9

Marks Antwort funktioniert, aber ich bin eher ein Maven Typ und möchte schließlich die Ausgabe jar mavenize.

So geht's mit Maven.

  1. Laden Sie eine WSDL in ein Verzeichnis herunter (z. B. mydir/MyWsdl.wsdl).
  2. Erstellen Sie eine pom.xml Datei (wie unten gezeigt).
  3. Führen Sie mvn package.

Hier ist, was Sie mit

└── 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 
am Ende dann

Und die Quelle der Datei 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

ich nicht ändern kann, weil es weniger als 6 Zeichen lang sein würde, aber es ist ein fehlendes x in der ersten Zeile der pom.xml: "x" mlns: xsi = "http: //www.w3 ..... –

Verwandte Themen