пример весны с клиентским перехватчиком - PullRequest
1 голос
/ 29 апреля 2011

Мне нужно добавить собственный заголовок мыла к исходящему сообщению мыла в клиенте spring ws 2.0.

Я использую перехватчик клиента следующим образом .....

public class MyWebServiceClientInterceptor implements ClientInterceptor {

    private QName qname = new QName(WEB_SERVICE_NAMESPACE, SOAP_HEADER_PART);
    private String testText = "<userName>myUser</userName><role>everything</role>";

    @Override
    public boolean handleRequest(MessageContext context) throws WebServiceClientException {
        SoapMessage soapMessage = (SoapMessage) context.getRequest();
        SoapHeader soapHeader = soapMessage.getSoapHeader();
        SoapHeaderElement newHeader = soapHeader.addHeaderElement(qname);
        newHeader.setActorOrRole(MY_SOAP_ACTOR);
        newHeader.setText(testText);
        return true;
    }
}  

Я подтвердил, что перехватчик вызван, но заголовок, похоже, не добавляется.Должен ли я сделать что-то вроде «коммита», чтобы применить заголовок к сообщению ????

1 Ответ

4 голосов
/ 04 мая 2011

Нет, вам не нужно делать какие-то коммиты.Я делаю более или менее то же самое (хотя я вызываю его изнутри метода sendAndRecieve шаблона WS:

            SoapMessage soapMessage = (SoapMessage) message;
        SoapHeader soapHeader = soapMessage.getSoapHeader();
        QName qname = QNameUtils.createQName(...,...);
        SoapHeaderElement element = soapHeader.addHeaderElement(qname);
        element.setText(text);

Вы пытались включить ведение журнала сообщений, чтобы посмотреть, как выглядит сообщение в действительности при отправкеout?

Вы можете сделать это, создав log4j.properties и добавив следующие строки:

#log4j.logger.org.springframework.ws.client.MessageTracing.sent=TRACE
#log4j.logger.org.springframework.ws.client.MessageTracing.received=TRACE
...