2013-08-19 22 views
7

sto provando ad interagire con un servizio web SOAP che ha l'autenticazione di base e ho l'url, il nome utente e la password. Ora voglio usare questo servizio web nel mio codice java e quindi ho bisogno di creare un file jar per questo.creazione del jar del client da SOAP wsdl

ho visto gli URL di seguito ma non sono sicuro se l'ho seguito correttamente. 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

Ho scaricato asse 2-1.6.2 da http://axis.apache.org/axis2/java/core/download.cgi (solo distribuzione binaria)

ho la stub del client che è stato dato ... vedo la gente dicendo di usarlo con costruire. xml, ma non sono riuscito a trovare build.xml ovunque .... Per favore dimmi cosa ho bisogno di installare per configurare l'asse e la formica di apache? Cosa sta facendo la formica qui?

risposta

7

Axis2 supporta diversi modi per supportare i client di servizi Web. L'approccio più comune è documentato here e comportava la generazione di codice Java che analizza il messaggio SOAP descritto dal file WSDL.

La seguente risposta descrive una serie di modi per richiamare un servizio Web. L'ultima parte descrive uno script Groovy che utilizza le classi generate da Axis2 e compilati utilizzando ANT:

Maggiori dettagli

Il programma WSDL2Java (in bundle con Axis2) genererà un ANT progetto basato sul file WSDL specificato:

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

Questo genererà i seguenti file:

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

Se si controlla il codice Java generato scoprirete classi Java che corrispondono ai tipi di schema XML definiti nel file WSDL, rendendo più semplice per serializzare e deserializzare i messaggi SOAP.

Il file "build.xml" contiene la logica che compilerà il codice java generato.

cd mydir 
ant 

Quando la costruzione è lo gestisce per difetto creare il file jar come segue:

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

Questo file jar possono ora essere inclusi da un java (o vedi il mio esempio di script Groovy nella other answer) che desidera accedere al servizio web.

9

La risposta di Mark funziona, ma io sono più di un ragazzo di Maven e voglio alla fine mavenize il vaso di output.

Ecco come farlo con Maven.

  1. Scaricare un WSDL in una directory (ad esempio mydir/MyWsdl.wsdl).
  2. Creare un file pom.xml (come illustrato di seguito).
  3. Corsa mvn package.

Ecco cosa vi ritroverete con

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

E la fonte del file 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

non posso modificare perché sarebbe meno di 6 caratteri, ma ci manca x nella prima riga di pom.xml: "x" mlns: xsi = "http: //www.w3 ..... –

Problemi correlati