wsimport nicht mit komplexen input-Typen
Wenn ich mit wsimport generieren proxies für einige Dienste, wird die resultierende Methode die Signatur für jeden port scheint nicht zu verwenden, die komplexe Typen angegeben, die in der WSDL; doch ich habe bemerkt, dass einige andere Dienstleistungen, die es tut.
Dies geschehen ist, auf mehrere Dienste, aber das jüngste Beispiel ist Amazon ' s AWSEConsumerService (link zur WSDL). Wenn ich generieren die service-proxy-code mit wsimport, bekomme ich Signaturen wie die folgende für jeden port.
@WebMethod(operationName = "ItemLookup", action = "http://soap.amazon.com/ItemLookup")
@RequestWrapper(localName = "ItemLookup", targetNamespace = "http://webservices.amazon.com/AWSECommerceService/2011-08-01", className = "com.aws.CommerceService.ItemLookup")
@ResponseWrapper(localName = "ItemLookupResponse", targetNamespace = "http://webservices.amazon.com/AWSECommerceService/2011-08-01", className = "com.aws.CommerceService.ItemLookupResponse")
public void itemLookup(
@WebParam(name = "MarketplaceDomain", targetNamespace = "http://webservices.amazon.com/AWSECommerceService/2011-08-01")
String marketplaceDomain,
@WebParam(name = "AWSAccessKeyId", targetNamespace = "http://webservices.amazon.com/AWSECommerceService/2011-08-01")
String awsAccessKeyId,
@WebParam(name = "AssociateTag", targetNamespace = "http://webservices.amazon.com/AWSECommerceService/2011-08-01")
String associateTag,
@WebParam(name = "Validate", targetNamespace = "http://webservices.amazon.com/AWSECommerceService/2011-08-01")
String validate,
@WebParam(name = "XMLEscaping", targetNamespace = "http://webservices.amazon.com/AWSECommerceService/2011-08-01")
String xmlEscaping,
@WebParam(name = "Shared", targetNamespace = "http://webservices.amazon.com/AWSECommerceService/2011-08-01")
ItemLookupRequest shared,
@WebParam(name = "Request", targetNamespace = "http://webservices.amazon.com/AWSECommerceService/2011-08-01")
List<ItemLookupRequest> request,
@WebParam(name = "OperationRequest", targetNamespace = "http://webservices.amazon.com/AWSECommerceService/2011-08-01", mode = WebParam.Mode.OUT)
Holder<OperationRequest> operationRequest,
@WebParam(name = "Items", targetNamespace = "http://webservices.amazon.com/AWSECommerceService/2011-08-01", mode = WebParam.Mode.OUT)
Holder<List<Items>> items);
Ich würde erwarten, dass diese Methode nehmen, die einzigen komplexen parameter angegeben, die von der WSDL (in diesem Fall ein ItemLookup-Objekt). Bin ich im Grunde Missverständnis etwas oder gibt es etwas abnormales passiert mit der code-Generierung?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich lief in ein ähnliches problem mit der AWS. Ich folgte der API-setup-Beschreibung für Java (Seite 10 dieser pdf
In Schritt 2 (es sagt für Eclipse 3.2) erstellen Sie eine Datei (sugessted name ist jaxws-custom.xml) mit dem folgenden Inhalt:
und führen Sie dann den wsimport-Befehl mit der option -b jaxws-custom.xml
Ich habe nicht herausgefunden was genau das problem ist, aber das Tat den trick für mich.