SOAP サービスの実装を Axis2 の使用から JAX-WS の使用 (技術的には、AS 7 上の JBossWS によって提供される CXF 実装) に変更する作業を行っていますが、最後の残りのメソッドを切り替えることができないという問題に遭遇しました。 JAX-WS スタイルに。
(仕様が公開されていないように見えるため、わずかに匿名化されています) メソッドは、base64binary 要素を含む Type を返します。
<xs:complexType name="BitmapResult">
<xs:sequence>
<xs:element minOccurs="0" name="chunkBitmap" nillable="true" type="xs:base64Binary"/>
</xs:sequence>
</xs:complexType>
Axis2 では、DataHandler を使用してバイナリー・パラメーターを処理し、結果を返すためにデフォルトで MTOM を使用するように見えるクラスが生成されます。
CXF wsdl2java ツールを使用して、これは byte[] を使用する型クラスを生成し、SOAP 応答自体内で base64 エンコードされたテキストとしてパラメーターを返します。
私が読んだすべてのことから、CXF でこれを行う正しい方法は、生成元の wsdl に次の内容が含まれていることを確認することですがxmime:expectedContentTypes="application/octet-stream"
、外部ソースから WSDL が提供されているため、ローカルで変更しないことをお勧めします。 .
WSDL を変更する以外に、CXF が DataHandler を使用してクラスを生成するように要求する別の方法はありますか? 私はすでに jaxb バインディング ファイルを使用して生成の他のパラメーターを微調整していますが、この特定の設定をオーバーライドできるものを見つけることができませんでした。