Вот основные шаги, если вы делаете это на стороне клиента:
- Установите HandlerResolver на свой сервисный интерфейс (service.setHandlerResolver ())
- Переопределите HandlerResolver.getHandlerChain (), чтобы вставить собственную реализацию SOAPHandler
- Реализация SOAPHandler.handleMessage () для изменения заголовка SOAP перед его отправкой
Вы можете передать параметры своему обработчику через контекст запроса:
Map<String, Object> context = ((BindingProvider) port).getRequestContext();
context.put("userName', "foo");
...
в handleMessage () вы можете получить заголовок следующим образом:
public boolean handleMessage(SOAPMessageContext context) {
...
SOAPMessage msg = context.getMessage();
msg.getSoapHeader();
...
}
Надеюсь, это поможет. Я предполагаю, что есть также способ сделать это с аннотациями.