web-service
以前に を使用していたクライアントをaxis
、現在使用するようにアップグレードしていますCXF
。web-service
はサードパーティに属しているため、自分で変更することはできませんwsdl
。
<message name="doSomethingRequest">
<part name="parameters" element="doSomething" />
</message>
<message name="doSomethingResponse">
<part name="parameters" element="doSomethingResponse" />
</message>
<portType name="myServicePortType">
<operation name="doSomething">
<input message="doSomethingRequest" />
<output message="doSomethingResponse" />
</operation>
</portType>
ご覧のとおり、 とmessage
はoperation
に記載されています。 を介してを呼び出すWSDL
と、 のバインド スタイルWRAPPED
が選択されます。これで問題ありません。/を介して生成された私の古いクラスには、クラスをパラメーター型として使用し、戻り値の型を持たないスタイルのすべてのメソッドもありました。wsdl2java
cxf-codegen-plugin
*PortType
axistools-maven-plugin
wsdl2java
WRAPPED
Holder
しかし、私の問題は、以前に を使用してクラスaxistools-maven-plugin
を生成していたときに、インターフェイスのニーズに合わせてjava
すべての*Holder
クラスも自動的に生成されたことです。*PortType
しかし、cx-codegen-plugin
では、インターフェイスのみがパラメータの型を必要とするスタイルを*PortType
反映します。!の一部として生成されたクラスが表示されません。WRAPPED
Holder
OUT
*Holder
wsdl2java
クラスを自分で作成せずに、クラスcxf-codegen-plugin
を生成する方法はありますか? 多くのリファクタリングを意味するため、バインディング スタイルに切り替えたくありません。前述のように、どちらも変更できません。*Holder
wsdl2java
BARE
WSDL
私はfwiwv3.0.2
のデータバインディングを使用しcxf-codegen-plugin
ています。JAXB
@RequestWrapper(localName = "doSomething", targetNamespace = "...", className = "...DoSomething")
@WebMethod(action = "urn:#doSomething")
@ResponseWrapper(localName = "doSomethingResponse", targetNamespace = "...", className = "...DoSomethingResponse")
public void doSomething(
@WebParam(name = "requestParam1", targetNamespace = "...")
java.lang.String requestParam1,
@WebParam(name = "requestParam2", targetNamespace = "...")
java.lang.String requestParam2,
// the below holders for SomeType1 and SomeType2, i.e the SomeType1Holder and SomeType2Holder, are not auto-generated as part of the wsdl2java
@WebParam(mode = WebParam.Mode.OUT, name = "responseParam1", targetNamespace = "...")
javax.xml.ws.Holder<SomeType1> responseParam1,
@WebParam(mode = WebParam.Mode.OUT, name = "responseParam2", targetNamespace = "...")
javax.xml.ws.Holder<SomeType2> responseParam2
);