2011-04-29 3 views
1

spring ws 2.0 클라이언트의 outgoing soap 메시지에 사용자 정의 비누 헤더를 추가해야합니다. 다음과 같이 내가 클라이언트 인터셉터를 사용하고spring ws clientinterceptor example

..... 나는 인터셉터라고 확인했지만, 헤더가 추가됩니다하지 않는 것

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; 
    } 
} 

. 나는 메시지에 헤더를 적용하기 위해 일종의 "커밋"을하고 싶었던가?

답변

4

아니요, 일부 커밋 유형을 수행 할 필요가 없습니다. 나는 할 더 많거나 (같은 일이 덜 나는 WS 템플릿의 sendAndRecieve 방법 내부에서 호출 있지만 :

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

당신이 그것을 밖으로 보낼 때 메시지가 acutally 좋아 보이는 것을 볼 로그 메시지를 켜기 시도?

이러한 라인을 log4j.properties를 생성하고 추가하여이 작업을 수행 할 수 있습니다

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