Я пытаюсь реализовать простой клиент веб-сервиса для API PayPal Express Checkout с помощью JAX WS. API PayPal Express Checkout предоставляет WSDL файл, из которого я смог создать классы Java с помощью утилиты CXF wsdl2java.
Из соображений аутентификации требуется добавить Заголовок 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, как указано в ответе здесь: Как добавить заголовок SOAP с помощью Java JAX-WS