I found that the Interceptor was not even being called after I put some
debugging statements inside the Interceptor I wrote. Then I found that The
org.apache.cxf.endpoint.Client interface has a superInterface
org.apache.cxf.interceptor.InterceptorProvider which has a method
getOutInterceptors() so I applied the interceptor to client not to
JaxWsProxyFactoryBean (which also implements InterceptorProvider), then it just
worked normally. I think I saw the interceptors being applied to the
JaxWsProxyFactoryBean instead of the client in an example such as in
http://cwiki.apache.org/CXF20DOC/a-simple-jax-ws-service.html at the bottom of
the page for the client code. Is this a mistake on the documentation or
something I am not uderstanding? Dan, would you help me out?
Thanks
----------------------------------------
> From: [EMAIL PROTECTED]
> To: [EMAIL PROTECTED]
> Subject: RE: client interceptor to send parameters with headers
> Date: Wed, 23 Apr 2008 18:15:05 +0000
>
> The phase change does not seem to matter and yes, as Dan suggested
> LoggingInInterceptor does show empty header:
>
> Apr 23, 2008 1:14:42 PM org.apache.cxf.interceptor.LoggingInInterceptor
> loggingINFO: Inbound Message----------------------------Encoding:
> UTF-8Headers: {connection=[keep-alive], host=[dev1.aixtest.com],
> user-agent=[Java/1.5.0_10], SOAPAction=[""], transfer-encoding=[chunked],
> pragma=[no-cache], content-type=[text/xml; charset=UTF-8], accept=[*],
> Cache-Control=[no-cache]}Messages: Message:
> Payload: test--------------------------------------
>
>
>
>
>> Date: Wed, 23 Apr 2008 18:58:13 +0100> From: [EMAIL PROTECTED]> To: [EMAIL
>> PROTECTED]> Subject: Re: client interceptor to send parameters with
>> headers>> Just saw Dan's mail and his suggestion to move the interceptor to>
>> Phase.USER_LOGICAL is much cleaner than mine.>> Regards,>> Ulhas Bhole>>
>> Ulhas Bhole wrote:>> Hello Henry,>>>> Sorry I forgot about the Header object
>> creation. you are tying to add>> the interceptor in Phase.WRITE and for some
>> reason it looks like it is>> getting called after the SoapOutInterceptor
>> which does the header>> processing.>>>> Try adding the following line to the
>> constructor after super() :>>
>> addBefore(SoapOutInterceptor.class.getName());>>>> This will make sure that
>> the interceptor is called before the headers>> are being processed.>>>>
>> Regards,>>>> Ulhas Bhole>>>> olanga henry wrote:>>> Dan: I am afraid that I
>> am still not seeing any headers on the server>>> side even after I tried
>> sending the Header the way you suggested.>>>>>> I am using the following
>> interceptor (as I found from the discussion>>> threads) in the server side
>> applied to JAX-WS HelloWorld service:>>>>>> public class MySoapInterceptor
>> extends AbstractSoapInterceptor {>>>>>> public MySoapInterceptor() {
>> super(Phase.UNMARSHAL); }>>>>>> public void handleMessage(SoapMessage msg)
>> throws SoapFault {>>> System.out.println("Interceptor " +
>> this.getPhase());>>> List lista = msg.getHeaders(); for (Header h :
>> lista)>>> { Element el = (Element) h.getObject();>>>
>> System.out.println("Header XML :");>>> XMLUtils.printDOM(el); Node node =>>>
>> DOMUtils.getChild(el, null); printNode(node);>>> while ( ((node =
>> DOMUtils.getNext(node, null,>>> node.getNodeType()) ) != null) ) {
>> printNode(node); } }>>> }>>>>>> public void printNode(Node node) {
>> System.out.println("Node :>>> "); System.out.println(node.getNodeName());>>>
>> System.out.println("Node value : ");>>>
>> System.out.println(DOMUtils.getContent(node)); }>>> }>>>>>>>>> and here is
>> my service config:>>>>>>>>> >>> >> implementor="#hello"
>> address="/services/HelloWorld">>>> >> bean="myInterceptor" />>>> Thank
>> you.>>>>>>>>>>>>>>>> From: [EMAIL PROTECTED]> To: [EMAIL PROTECTED]>
>> Subject:>>>> Re: client interceptor to send parameters with headers> Date:
>> Wed,>>>> 23 Apr 2008 13:00:24 -0400> CC: [EMAIL PROTECTED]>> On Wednesday
>> 23>>>> April 2008, sudip shrestha wrote:>> Ulhas:>>>> *In the method:>>>>
>> public java.util.List>>>>> >>>>>/Header.html>> **getHeaders()>>>> **as the
>> list has the type of>>>> Header, the add method does not accept>>
>> org.w3c.dom.Element as the>>>> parameter.>> Just do "new Header(> new
>> QName(el.getNamespaceURI(),>>>>> el.getLocalName()),> el)">> That should be
>> it.>> Dan>>>>>>>>>>>> Thanks>> *>>>> On Wed, Apr 23, 2008 at 10:53 AM, Ulhas
>> Bhole>>>> > wrote:>>> Hi Olanga,>>>>>> try>>>> skipping the SoapHeader
>> creation and add the DOM element>>>>>>> directly into the Header list like
>> msg.getHeaders().add(param1).>>>>>>>>>> -- Ulhas Bhole>>>>>> olanga henry
>> wrote:>>>> Hi all,>>>> this was so easy in XFire with the handlers. I am a
>> bit>>>>>>>> struggling due to lack of clear examples. I am trying to write
>> a>>>>>>>> simple interceptor on the client side (am not clear on
>> which>>>>>>>> abstractInterceptor to extend out of several available in
>> cxf,>>>> so>>>> in this example I just extended AbstractSoapInterceptor)>>>>
>> so that I>>>> can send some parameters in the soap headers. Here>>>> is what
>> I>>>> did:public class AddHeaderInterceptor extends>>>>>>>>
>> AbstractSoapInterceptor { public AddHeaderInterceptor() {>>>>>>>>
>> super(Phase.WRITE); } public void handleMessage(SoapMessage msg)>>>>>>>>
>> throws SoapFault { Document d = DOMUtils.createDocument();>>>>>>>> Element
>> param1 = d.createElement("my_param1");>>>>>>>> param1.setTextContent("my
>> param1"); SoapHeader sh_param1 = new>>>>>>>> SoapHeader(new
>> QName("http://spring.demo", "HelloWorldImplPort"),>>>>>>>> param1);
>> msg.getHeaders().add( sh_param1 ); }}Then I attached>>>>>>>> the interceptor
>> to the factory in the actual client code:>>>>>>>> JaxWsProxyFactoryBean
>> factory = new JaxWsProxyFactoryBean();>>>>>>>> factory.setServiceClass(
>> HelloWorld.class ); factory.setAddress(>>>>>>>>
>> "http://wsdev.adestagroup.com/services/HelloWorld" );>>>>>>>>
>> factory.getOutInterceptors().add(new>>>> AddHeaderInterceptor());>>>>
>> //<<------------------->>>> HelloWorld client = (HelloWorld)>>>>
>> factory.create();>>>> System.out.println( client.sayHi("test")>>>> );But I
>> can't seem>>>> to intercept the headers at the server>>>> side. What am I
>> doing>>>> wrong here?Highly appreciate any help.>>>> Thanks>>>>>>>>
>> _________________________________________________________________>>>>>>>>
>> Make i'm yours. Create a custom banner to support your
>> cause.>>>>>>>>>>>>>>>>
>> http://im.live.com/Messenger/IM/Contribute/Default.aspx?source=TXT>>>>>>>>_TAGHM_MSN_Make_IM_Yours>>>>>>>>>>
>> ---------------------------->>> IONA Technologies PLC (registered>>>> in
>> Ireland)>>> Registered Number: 171387>>> Registered Address:>>>> The IONA
>> Building, Shelbourne Road, Dublin 4,>>> Ireland>>>> -->>>>> J. Daniel Kulp>
>> Principal Engineer, IONA> [EMAIL PROTECTED]>>>>>
>> http://www.dankulp.com/blog>>>>>>>
>> _________________________________________________________________>>> Spell a
>> grand slam in this game where word skill meets World Series.>>> Get in the
>> game.>>>
>> http://club.live.com/word_slugger.aspx?icid=word_slugger_wlhm_admod_april08>>>>>>>>>>>>
>> ---------------------------->> IONA Technologies PLC (registered in
>> Ireland)>> Registered Number: 171387>> Registered Address: The IONA
>> Building, Shelbourne Road, Dublin 4, Ireland>>>>
>> ----------------------------> IONA Technologies PLC (registered in Ireland)>
>> Registered Number: 171387> Registered Address: The IONA Building, Shelbourne
>> Road, Dublin 4, Ireland
> _________________________________________________________________
> Make i'm yours. Create a custom banner to support your cause.
> http://im.live.com/Messenger/IM/Contribute/Default.aspx?source=TXT_TAGHM_MSN_Make_IM_Yours
_________________________________________________________________
Express yourself wherever you are. Mobilize!
http://www.gowindowslive.com/Mobile/Landing/Messenger/Default.aspx?Locale=en-US?ocid=TAG_APRIL