That's the perfect way to do it.   

The only issue MIGHT be super(Phase.WRITE);     That's the same phase as the 
SoapOutInterceptor which would be writing the headers.   Thus, if your 
interceptor happens to run after the SoapOutInterceptor, your header wouldn't 
get written.   I would suggest moving it to an earlier phase (PRE_PROTOCOL 
maybe) or add a "addBefore(SoapOutInterceptor.class.getName())"


Dan



On Fri October 9 2009 6:12:02 am AshAce wrote:
> I'm trying to add a SOAPHeader to my request using a custom soap header
> OutInterceptor. I don't want to use ((BindingProvider)
> proxy).getRequestContext().put(Header.HEADER_LIST, headers);
> 
> The class is a such :
> 
> public class CustomSoapHeaderOutInterceptor extends AbstractSoapInterceptor
> {
> 
>       public CustomSoapHeaderOutInterceptor() {
>               super(Phase.WRITE);
> 
>       }
> 
>       @Override
>       public void handleMessage(SoapMessage message) throws Fault{
> 
> 
>                       SoapMessage soapMessage = (SoapMessage) message;
>                       List<Header> list = message.getHeaders();
> 
>                       QName q = new QName("http://commons.cxf.learning.com/";,
>  "HeaderService"); Person person = new Person();
>                       person.setName("one person");
>                       JAXBDataBinding dataBinding = null;
>                               try {
>                                       dataBinding = new 
> JAXBDataBinding(person.getClass());
>                               } catch (JAXBException e1) {
>                                       e1.printStackTrace();
>                               }
> 
>                               SoapHeader header = new SoapHeader(q,person, 
> dataBinding);
>                       list.add(header);
> 
>       }
> }
> 
> 
> This seems to work just fine. I just want to know if this is the correct
>  way of doing it or do we need to extend some other specific interceptor.
> 

-- 
Daniel Kulp
[email protected]
http://www.dankulp.com/blog

Reply via email to