# Nutzen des Webservice AWSECommerceService



## msfox (12. Jan 2011)

Hallo Zusammen,

ich versuche gerade den Webservice von Amazon zu nutzen.

http://ecs.amazonaws.com/AWSECommerceService/AWSECommerceService.wsdl

Zum Testen wollten ich den Quellcode aus
http://www.java-forum.org/soa/93120-gui-erstellen-fuer-amazon-webservice-client.html? verwenden:

```
import java.rmi.RemoteException;
import org.apache.axis2.AxisFault;
import com.amazon.webservices.awsecommerceservice._2009_11_01.*;
 
 
public class AmazonSearch {
    public static void search(){
        String keyword = "Verteilte Anwendungen";
 
            try{
                
                AWSECommerceServiceStub stub= new AWSECommerceServiceStub();
            
                AWSECommerceServiceStub.ItemSearch iss = new AWSECommerceServiceStub.ItemSearch();
                            
                AWSECommerceServiceStub.ItemSearch_type0 is = new AWSECommerceServiceStub.ItemSearch_type0();
                
                String awsAccessKeyID = "AKIAJYZSMOJOBACNCVRQ";
                is.setAWSAccessKeyId(awsAccessKeyID);
                                
                
                AWSECommerceServiceStub.ItemSearchRequest req = new AWSECommerceServiceStub.ItemSearchRequest();        
                req.setKeywords(keyword);
                req.setSearchIndex("Books");
                //req.setAuthor("Abts");        
                
                                                
                is.setShared(req);
                iss.setItemSearch(is);
                
                AWSECommerceServiceStub.ItemSearchResponse resp = stub.ItemSearch(iss);
                
                            
        }catch (AxisFault e){
                System.out.println(e);
                }
        catch (RemoteException e){
                System.out.print(e);
        }
    }
}
```

Leider scheitert es irgendwie schon daran, mir die Klassen für den WS richtig in Eclipse generieren zu lassen.
Dazu lade ich in mein Projekt über New -> Other ... Web Service Client den Webservice.
Dabei werden automatisch diversen Klassen generiert.
Die Klassen/Interfaces AWSECommerceServiceBindingStub, AWSECommerceServicePortType, AWSECommerceServicePortTypeProxy haben jedoch diverse Fehler und lassen sich damit nicht kompilieren. Die Fehler sind u.a. das die Klassen:
- com.amazon.webservices.AWSECommerceService._2010_12_01.Help
- com.amazon.webservices.AWSECommerceService._2010_12_01.ItemSearch
- com.amazon.webservices.AWSECommerceService._2010_12_01.ItemLookup
- (com.amazon.webservices.AWSECommerceService._2010_12_01.holders.HelpResponseHolder)
nicht gefunden werden. Generiert wurden aber die Klassen: 
- com.amazon.webservices.AWSECommerceService._2010_12_01.HelpRequest
- com.amazon.webservices.AWSECommerceService._2010_12_01.ItemSearchRequest
- com.amazon.webservices.AWSECommerceService._2010_12_01.ItemLookupRequest

Im obigen Quellcode gibt es nun die beiden Zeilen:

```
[...]
AWSECommerceServiceStub.ItemSearchRequest req = new AWSECommerceServiceStub.ItemSearchRequest(); 
[...]
AWSECommerceServiceStub.ItemSearchResponse resp = stub.ItemSearch(iss);
[...]
```

In diesem Fall habe ich weder ItemSearchRequest noch ItemSearchResponse, sondern nur ItemSearch.
Auch heißt das Package bei mir nicht AWSECommerceServiceStub, sondern nur AWSECommerceService.

Habe ich beim Generieren etwas falsch gemacht?

Hauptentwicklungsziel ist es ein kleines JavaTool zu schreiben, was mir das Bild eines Musikalbums von Amazon lädt.


----------



## msfox (13. Jan 2011)

Die Generierung funktioniert jetzt. Da man ständig Beiträge ohne Lösung findet, will ich diese hier mal nicht vorenthalten.
1. Entsprechend der Anleitung: Web Service Tutorial - Verbindung des Apache Axis2 Containers mit Eclipse 3.4 (Ganymede) / Fachgebiet Software Engineering habe ich in Eclipse Axis2 eingerichtet.
2. Entsprechend der Anleitung:Java EE Tutorial - Verbindung des Apache Tomcat 6.0 Server mit Eclipse / Fachgebiet Software Engineering habe ich den Tomcat eingerichtet.
3. Jetzt konnte man den obigen Webservice so generieren, dass zwei Klassen AWSECommerceServiceCallbackHandler und AWSECommerceServiceSub entstehen. Die Klassen die ich in meinen obigen Problem alle einzeln hatte, sind jetzt InnerClasses geworden. Vermutlich hatte ich bei meinen ersten Versuchen nur Axis?

Vielleicht kann mir jemand noch eine Verständnisfrage beantworten:
Eigentlich habe ich nur ein einfaches Java-Projekt mit Swing entwickelt und wollte dort einen WS anbinden. 
Warum klappt die Generierung nur korrekt, wenn ich ein "Dynamisches Webprojekt" mit Axis2 verwende? 
Irgendwie hat mein kleines Programm sehr viel Overhead bekommen.


----------

