Should add that I run this on 2.7.5

2013/6/21 David Karlsen <[email protected]>

> I initially used POST_PROTOCOL for this outInterceptor - and that returned
> headers.size() == 0.
> Changing it to:  super(Phase.WRITE);
>         addBefore(SoapOutInterceptor.class.getName());
> will still not return the headers.
>
> However this code:
>         Document document = (Document) requestMessage.getContent(
> org.w3c.dom.Node.class );
>         NodeList nodeList =
>             document.getElementsByTagNameNS(
> EDB_AUT_HEADER_QNAME.getNamespaceURI(),
>
>  EDB_AUT_HEADER_QNAME.getLocalPart() );
>         if ( nodeList.getLength() == 1 )
>         {
>             edbHeaderType =
>                 jaxbContext.createUnmarshaller().unmarshal( nodeList.item(
> 0 ), EDBHeaderType.class ).getValue();
>         }
>
>
> is capable of finding it, but is less "clean".
>
>
>
>
> The header *is* present (I use a similar InInterceptor - which IS capable
> of getting the headers, and it is:
> this( Phase.USER_PROTOCOL );
>         addAfter( ReadHeadersInterceptor.class.getName() );
>
>
>
> 2013/6/19 Freeman Fang <[email protected]>
>
>> Hi,
>>
>> What's the phase for the outInterceptor which you try to retrieve soap
>> header?
>>
>> Also, please double check the request message have the soap header which
>> match the QName you specified here.
>>
>> Please take a look at the outInterceptor I put here which can get headers
>> from request message
>>
>> public class GetSoapHeaderInterceptor extends AbstractSoapInterceptor {
>>
>>     public GetSoapHeaderInterceptor() {
>>         super(Phase.WRITE);
>>         addBefore(SoapOutInterceptor.class.getName());
>>     }
>>
>>     @Override
>>     public void handleMessage(SoapMessage message) throws Fault {
>>         if (message.getExchange() != null) {
>>             if (message.getExchange().getInMessage() instanceof
>> SoapMessage) {
>>                 SoapMessage requestMessage = (SoapMessage)
>>                     message.getExchange().getInMessage();
>>                 List<Header> headers = requestMessage.getHeaders();
>>                 System.out.println("header size is " + headers.size());
>>             }
>>         }
>>
>>
>>     }
>>
>> }
>>
>> -------------
>> Freeman(Yue) Fang
>>
>> Red Hat, Inc.
>> FuseSource is now part of Red Hat
>> Web: http://fusesource.com | http://www.redhat.com/
>> Twitter: freemanfang
>> Blog: http://freemanfang.blogspot.com
>> http://blog.sina.com.cn/u/1473905042
>> weibo: @Freeman小屋
>>
>>
>>
>> On 2013-6-18, at 下午7:48, David Karlsen wrote:
>>
>> > Hi.
>> >
>> > I have an serverside outinterceptor, where I need access to a soap
>> header
>> > in the correlating incoming request.
>> >
>> > My code:
>> >
>> > QName someQnameOfTheSoapHeader = new QName( ns, localname);
>> > SoapMessage requestMessage = (SoapMessage)
>> > soapMessage.getExchange().getInMessage();
>> > Header header = requestMessage.getHeader( someQnameOfTheSoapHeader );
>> >
>> > but header is null!
>> >
>> > Any pointers?
>> >
>> > --
>> > David J. M. Karlsen - http://www.linkedin.com/in/davidkarlsen
>>
>>
>
>
> --
> --
> David J. M. Karlsen - http://www.linkedin.com/in/davidkarlsen
>



-- 
--
David J. M. Karlsen - http://www.linkedin.com/in/davidkarlsen

Reply via email to