4

異なる 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 番目のバージョンも戻り値を持ちたいと思います。どうすればこれを達成できますか?

4

1 に答える 1

4

これは役に立ちました(ケース2ではなぜこれが必要なのか、1では必要ではなかったのか、まだ理解していません):

<!--JAX-WD Customization: disable wrapper style rules
  see also: http://docs.oracle.com/cd/E17802_01/webservices/webservices/docs/2.0/jaxws/customizations.html#2.2_Wrapper_Style
-->
<jaxws:bindings wsdlLocation="v1.0/dxpInsurerServiceV1.0.wsdl" xmlns:jaxws="http://java.sun.com/xml/ns/jaxws">
 <jaxws:enableWrapperStyle>false</jaxws:enableWrapperStyle>
</jaxws:bindings>

jaxws-custom.xml 内

そして、これは生成中のant-taskにあります:

参照: 複雑な入力タイプを使用しない wsimport

于 2012-06-27T06:06:46.723 に答える