JAX WSを使用して、 PayPal Express Checkout API用の単純な Web サービス クライアントを実装しようとしています。PayPal Express Checkout APIはWSDLファイルを提供します。このファイルから、 CXF の wsdl2javaユーティリティを使用して Java クラスを生成できました。
認証上の理由から、各リクエストにSOAP ヘッダーを追加する必要があります。このヘッダーは非常にシンプルで、次のようになります: https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_api_ECSOAPAPIBasics#id09C3I0CF0O6
WSDLクラスから生成されたものには、各リクエストに追加する必要があるヘッダーを表すebay.apis.eblbasecomponents.CustomSecurityHeaderTypeクラスが含まれます。
問題は、次の条件を考慮して、 CustomSecurityHeaderTypeクラスの手動で作成されたインスタンスを SOAP リクエストのヘッダーに追加するにはどうすればよいかということです。
- ここでの回答で述べたように、com.sun.*パッケージのクラスを使用することにあまり熱心ではありません: JAX-WS - SOAP ヘッダーの追加(主に、異なる JDK 間で移植性の問題が発生する可能性があるため)
- ここでの回答に記載されているように、そのオブジェクトをネストされた javax.xml.soap.SOAPElementインスタンス に手動でマーシャリングしたくありません: How do I add a SOAP Header using Java JAX-WS