2013-08-19 20 views
7

Próbuję wejść w interakcję z usługą sieciową SOAP, która ma podstawowe uwierzytelnienie i mam adres URL, nazwę użytkownika i hasło. Teraz chcę użyć tej usługi sieciowej w moim kodzie java, więc muszę utworzyć dla niej plik JAR.Generowanie słoja klienta z SOAP wsdl

Widziałem poniższe adresy URL, ale nie jestem pewien, czy podążyłem za nimi poprawnie. 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

Pobrałem oś 2-1.6.2 z http://axis.apache.org/axis2/java/core/download.cgi (tylko podział binarny)

mam niedopałek klienta, który został podany ... Widzę ludzi, którzy mówią używać go z kompilacji. xml, ale nie mogłem znaleźć pliku build.xml w dowolnym miejscu .... Proszę mi powiedzieć, co muszę zainstalować, aby ustawić oś apache i ant? Co tu robi mrówka?

Odpowiedz

7

Axis2 obsługuje kilka sposobów obsługi klientów usług sieci Web. Najczęstsze podejście jest udokumentowane here i obejmuje generowanie kodu Java, który analizuje komunikat SOAP opisany przez plik WSDL.

Poniższa odpowiedź opisuje różne sposoby wywołania usługi internetowej. Ostatnia część opisuje groovy skrypt, który używa klas generowanych przez Axis2 i skompilowane przy użyciu ANT:

Więcej szczegółów

Program wsdl2java (w pakiecie z Axis2) wygeneruje ANT projekt oparty na określonym pliku WSDL:

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

Spowoduje wygenerowanie następujących plików:

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

Jeśli zaznaczysz wygenerowany kod Java dowiesz klas Javy, które pasują do typu schematu XML zdefiniowane w pliku WSDL, dzięki czemu łatwiejsze do serializacji i deserializacji komunikatów SOAP.

Plik "build.xml" zawiera logikę, która skompiluje wygenerowany kod Java.

cd mydir 
ant 

Kiedy kompilacja przebiega będzie domyślnie utworzyć plik jar w następujący sposób:

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

Ten plik słoik może być teraz włączone przez Java (lub zobaczyć moim przykładem groovy skrypt w other answer), które chce uzyskać dostęp do usługi internetowej.

9

Odpowiedź Marka działa, ale ja jestem raczej facetem Mavena i chcę w końcu odkryć słoik wyjściowy.

Oto jak to zrobić z Mavenem.

  1. Pobierz plik WSDL do katalogu (np. mydir/MyWsdl.wsdl).
  2. Utwórz plik pom.xml (jak pokazano poniżej).
  3. Uruchom mvn package.

Oto co musisz skończyć z

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

i źródła pliku 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

nie mogę edytować, ponieważ byłoby to mniej niż 6 znaków, ale nie to brakujące x w pierwszym wierszu pliku pom.xml: "x" mlns: xsi = "http: //www.w3 ..... –

Powiązane problemy