異なる Java コードを生成する 2 つの非常によく似た wsdl ファイルがあります。最初のケースでは、@WebMethod アノテーションと戻り値を持つメソッドを取得します。2 番目のケースでは、@ResponseWrapper アノテーションを持つメソッドが生成され、戻り値は生成されません。戻り値が欲しいです。
1.サービス1
<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>
生成:
@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. フーバーサービス
<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>
生成します:
@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);
コードを生成するコードはまったく同じです。
必要に応じて、メッセージと型のマークアップを提供できます。匿名化が関連する部分を台無しにしないことを願っています。
2 番目のバージョンも戻り値を持ちたいと思います。どうすればこれを達成できますか?