You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by AshAce <as...@hotmail.com> on 2009/10/09 12:12:02 UTC
Adding SOAPHeader using an Interceptor
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.
--
View this message in context: http://www.nabble.com/Adding-SOAPHeader-using-an-Interceptor-tp25818665p25818665.html
Sent from the cxf-user mailing list archive at Nabble.com.
Re: Adding SOAPHeader using an Interceptor
Posted by Ashvin Ramanjooloo <as...@hotmail.com>.
Thanks Dan
dkulp wrote:
>
>
> 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
> dkulp@apache.org
> http://www.dankulp.com/blog
>
>
--
View this message in context: http://www.nabble.com/Adding-SOAPHeader-using-an-Interceptor-tp25818665p26064017.html
Sent from the cxf-user mailing list archive at Nabble.com.
Re: Adding SOAPHeader using an Interceptor
Posted by Daniel Kulp <dk...@apache.org>.
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
dkulp@apache.org
http://www.dankulp.com/blog