In this case you need to use a WebClient.create() variant which
accepts a classpath location of Spring config,
ex, WebClient.create(address, "classpath:/config/beans.xml").
WebClient.getConfig(client).getOutInterceptors().add(new
LoggingOutInterceptor());

Sergey

On Fri, Jun 3, 2011 at 4:17 PM, Humagain, Himal
<[email protected]> wrote:
> Thanks a lot Dan. I am very close to getting it done. I have one question. 
> This is what I am doing now:
>
> // in spring config
>
>        <bean id="loggingOutInterceptor" 
> class="org.apache.cxf.interceptor.LoggingOutInterceptor">
>        <constructor-arg value="write"/>
>     </bean>
>
>    <cxf:bus>
>         <cxf:outInterceptors>
>                <ref bean="loggingOutInterceptor"/>
>           </cxf:outInterceptors>
>     </cxf:bus>
>
> I found that is it logging only out bound messages from the server. I want to 
> log the outbound message from the client. How would I do that?
>
> I am using cxf's WebClient class as follows for sending post:
>
> //in my main method of test class.
>      WebClient xmlClient2 = WebClient.create("http://...";);
>      String cResponse = xmlClient2.post(request, String.class);
>
> I see my interceptors are getting called when I run my test program.
>
> Thanks a lot for your help.
>
> Himal.
>
> -----Original Message-----
> From: Daniel Kulp [mailto:[email protected]]
> Sent: Friday, June 03, 2011 10:56 AM
> To: [email protected]; Fabio souza
> Cc: Humagain, Himal
> Subject: Re: Getting payload in the client side.
>
> On Thursday, June 02, 2011 5:05:30 PM Humagain, Himal wrote:
>> Thanks a lot for your reply. I am trying the logging option but will not
>> fulfill my need. I need to get hold of the payload (content) in the client
>> side then I want to include it in my MD5 hashing of the content, then the
>> generated signature will be added to the header section of the post. If I
>> can get the payload in the form of a String in handleMessage method that
>> will be ideal. Is it possible to do that? If yes, Which interceptor should
>> I use and in which phase.
>
> You could grab the source for the Logging interceptors and use that as a
> starting point.
>
> That said, I'd suggest an alternative approach.   Stick an interceptor that
> runs prior to the StaxOutInterceptor that would do:
>
>
> OutputStream out = message.getContent(OutputStream.class);
> DigestOutputStream dos = new DigestOutputStream(out,
> MessageDigest.getInstance("MD5"))
> message.setContent(dos, OutputStream.class);
> message.put("digest.stream", dos);
>
>
> That will calculate the digest while writing.    A second interceptor that
> runs later can do:
>
>
> DigestOutputStream dos = message.get("digest.stream");
> dos.getMessageDigest().digest();
>
> to compute the digest and then do whatever it is you need to do with it.
>
>
> Actually, instead of the second interceptor, you could override the close
> method on the stream to do it:
>
>
> DigestOutputStream dos = new DigestOutputStream(out,
> MessageDigest.getInstance("MD5"))   {
>
> public void close() {
>   byte digest[] = getMessageDigest().digest();
>   //do something with it
>   super.close();
> }
> }
>
> Dan
>
>
>
>
>
>
>>
>> I will really appreciate your response.
>>
>> Thanks,
>> Himal
>>
>> -----Original Message-----
>> From: Sergey Beryozkin [mailto:[email protected]]
>> Sent: Thursday, June 02, 2011 4:43 PM
>> To: Humagain, Himal
>> Cc: Fabio souza; [email protected]
>> Subject: Re: Getting payload in the client side.
>>
>> Hi, Please use a logging feature
>>
>> Cheers, Sergey
>>
>> On Thu, Jun 2, 2011 at 6:55 PM, Humagain, Himal
>>
>> <[email protected]> wrote:
>> > Hi,
>> >
>> > How can I print the CXF generated payload (content) in the client side
>> > before sending it to the web service? My web service takes an object and
>> > gives me an object back. But I would like to get the CXF generated
>> > payload before it is posted to the webservie.
>> >
>> > I have tried using interceptors and I was trying to get to the payload
>> > using the Message under "handleMessage" method.
>> >
>> > I will appreciate any help.
>> >
>> > Thanks,
>> > Himal.
>> > This communication is for informational purposes only. It is not
>> > intended as an offer or solicitation for the purchase or sale of
>> > any financial instrument or as an official confirmation of any
>> > transaction. All market prices, data and other information are not
>> > warranted as to completeness or accuracy and are subject to change
>> > without notice. Any comments or statements made herein do not
>> > necessarily reflect those of JPMorgan Chase & Co., its subsidiaries
>> > and affiliates.
>> >
>> > This transmission may contain information that is privileged,
>> > confidential, legally privileged, and/or exempt from disclosure
>> > under applicable law. If you are not the intended recipient, you
>> > are hereby notified that any disclosure, copying, distribution, or
>> > use of the information contained herein (including any reliance
>> > thereon) is STRICTLY PROHIBITED. Although this transmission and any
>> > attachments are believed to be free of any virus or other defect
>> > that might affect any computer system into which it is received and
>> > opened, it is the responsibility of the recipient to ensure that it
>> > is virus free and no responsibility is accepted by JPMorgan Chase &
>> > Co., its subsidiaries and affiliates, as applicable, for any loss
>> > or damage arising in any way from its use. If you received this
>> > transmission in error, please immediately contact the sender and
>> > destroy the material in its entirety, whether in electronic or hard
>> > copy format. Thank you.
>> >
>> > Please refer to http://www.jpmorgan.com/pages/disclosures for
>> > disclosures relating to European legal entities.
>
> --
> Daniel Kulp
> [email protected]
> http://dankulp.com/blog
> Talend - http://www.talend.com
>



-- 
Sergey Beryozkin

Application Integration Division of Talend
http://sberyozkin.blogspot.com

Reply via email to