jax-ws-generation: @WebMethod vs. @ResponseWrapper
Habe ich zwei sehr ähnliche wsdl-Dateien, die Erstellung von verschiedenen Java-Code. Im ersten Fall bekomme ich eine Methode mit der @WebMethod-annotation und einen Wert zurück, im zweiten Fall eine Methode mit @ResponseWrapper-annotation und keine Rückgabewerte erzeugt. Ich möchte die Werte zurückgeben.
1. Service1
<wsdl:operation name="foo">
<wsdl:input name="deleteUser" message="tns:deleteUserRequest"/>
<wsdl:output name="deleteUserResponse" message="tns:deleteUserResponse"/>
<wsdl:fault name="ServiceFault" message="tns:ServiceFault"/>
</wsdl:operation>
generiert:
@WebMethod
@WebResult(name = "commonReturnType", targetNamespace = "http://www.foo.com/fooSchemaTypes-v3.0/", partName = "returnValue")
public CommonReturnType foo(
@WebParam(name = "fooType", targetNamespace = "http://www.foo.com/fooSchemaTypes-v3.0/", partName = "user")
FooType user)
throws ServiceFault
;
2. FooBarService
<wsdl:operation name="fooBar">
<wsdl:input name="fooBar" message="tns:fooBarRequest"></wsdl:input>
<wsdl:output name="ackFileResponse" message="tns:fooBarResponse"></wsdl:output>
<wsdl:fault name="ServiceFault" message="tns:fooBarFault"></wsdl:fault>
</wsdl:operation>
genereates:
@WebMethod
@RequestWrapper(localName = "fooBar", targetNamespace = "http://www.foo.com/fooBarSchemaTypes-v1.0/", className = "com.foo.fooBar.v1_0.GetFileType")
@ResponseWrapper(localName = "fooBarResponse", targetNamespace = "http://www.foo.com/fooBarSchemaTypes-v1.0/", className = "com.foo.fooBar.v1_0.CommonReturnType")
public void ackFile(
@WebParam(name = "id", targetNamespace = "")
String id,
@WebParam(name = "timestamp", targetNamespace = "")
XMLGregorianCalendar timestamp,
@WebParam(name = "anotherId", targetNamespace = "")
String anotherId,
@WebParam(name = "fileId", targetNamespace = "")
String fileId,
@WebParam(name = "returnCode", targetNamespace = "", mode = WebParam.Mode.OUT)
Holder<ReturnCode> returnCode,
@WebParam(name = "errorMessage", targetNamespace = "", mode = WebParam.Mode.OUT)
Holder<String> errorMessage);
Den code, der generiert den code ist genau das gleiche.
Wenn nötig, kann ich das markup für die Nachrichten und die Arten. Ich hoffe anonymising nicht mess up die relevanten Teile.
Ich würde gerne die zweite version auch mit einem Rückgabewert. Wie kann ich das erreichen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das hat geholfen (immer noch nicht verstehen, warum dies notwendig ist, in Fall 2, es war zwar nicht notwendig, 1):
in jaxws-custom.xml
- und dies ist in der Generierung von ant-Aufgabe:
siehe auch: wsimport nicht mit komplexen input-Typen