You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by Fabio souza <fa...@gmail.com> on 2011/06/02 15:20:20 UTC

Extending CXF bus

Hi,

I'd like to be able to dynamically monitoring different aspects related to
web services (e.g. response time, processing time, availability, etc). I
would like that the set of possible monitoring aspects was an open end. I
mean, I would like to be able to start monitoring something that wasn't
planned before without stopping the service. I did something like that in
the context of DOSGi. In fact, I modified DOSGi to include a customized
interceptor (that I call the *chainer*) when an endpoint is going to be
published. This interceptor is notified when a new *monitoring interceptor* (an
osgi service) is started and plug it in the corresponding chain of
interceptors. In that way, the next request to this service will be
monitored.

Well, I am considering to use the same idea out of an dosgi environment. To
do that, I plan to start an osgi context (that will be used to
register my *Monitoring
services*) when the CXF bus is started (however, I am not sure how I could
do that). Also, I plan to plug my chainer interceptor directly to the bus,
so that the developer of the services would not be necessarily aware of the
monitoring stuff. Could you please tell me if this idea seems to make sense?
Is there some particular documentation that I could use?

Thank you, very much!

-- 
Fábio

Re: Getting payload in the client side.

Posted by Sergey Beryozkin <sb...@gmail.com>.
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
<hi...@jpmchase.com> 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:dkulp@apache.org]
> Sent: Friday, June 03, 2011 10:56 AM
> To: users@cxf.apache.org; 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:sberyozkin@gmail.com]
>> Sent: Thursday, June 02, 2011 4:43 PM
>> To: Humagain, Himal
>> Cc: Fabio souza; users@cxf.apache.org
>> 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
>>
>> <hi...@jpmchase.com> 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
> dkulp@apache.org
> http://dankulp.com/blog
> Talend - http://www.talend.com
>



-- 
Sergey Beryozkin

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

RE: Getting payload in the client side.

Posted by "Humagain, Himal" <hi...@jpmchase.com>.
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:dkulp@apache.org] 
Sent: Friday, June 03, 2011 10:56 AM
To: users@cxf.apache.org; 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:sberyozkin@gmail.com]
> Sent: Thursday, June 02, 2011 4:43 PM
> To: Humagain, Himal
> Cc: Fabio souza; users@cxf.apache.org
> 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
> 
> <hi...@jpmchase.com> 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
dkulp@apache.org
http://dankulp.com/blog
Talend - http://www.talend.com

Re: Getting payload in the client side.

Posted by Sergey Beryozkin <sb...@gmail.com>.
If you are posting a String content then you may want to calculate the
hash and set it as a header directly on WebClient.
If you prefer doing it in the interceptor then you can get the
original Object (such as String) like this:
Object str = message.getContent(List.class).get(0);

Cheers, Sergey

On Wed, Jun 8, 2011 at 10:09 PM, Humagain, Himal
<hi...@jpmchase.com> wrote:
> Thank you very much Dan for your reply. I am able to hit the interceptor and set headers there and get it in the server. I still cannot get hold of content of the post in the interceptor level. This is what I have:
>
> //in my main method
>        String payload = "This is what I want in ICOutBoundInterceptor";
>      WebClient xmlClient2 = WebClient.create(BASE_URI);
>
>      WebClient.getConfig(xmlClient2).getOutInterceptors().add(new ICOutBoundInterceptor(Phase.WRITE));
>      String cResponse = xmlClient2.post(payload, String.class);
>
> //I want to get only the payload (content) part (The value of string payload (value: "This is what I want in ICOutBoundInterceptor") from main method) in //the handleMessage method of my interceptor (ICOutBoundInterceptor)
>
> I want to create hash of only the payload not the output stream. It is because I found the output stream changes along the way until it reaches the server side. I tried that but the hash is never equal in the client side and server side.
>
> I will appreciate your help.
>
> Thanks,
>
>
> -----Original Message-----
> From: Daniel Kulp [mailto:dkulp@apache.org]
> Sent: Friday, June 03, 2011 10:56 AM
> To: users@cxf.apache.org; 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:sberyozkin@gmail.com]
>> Sent: Thursday, June 02, 2011 4:43 PM
>> To: Humagain, Himal
>> Cc: Fabio souza; users@cxf.apache.org
>> 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
>>
>> <hi...@jpmchase.com> 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
> dkulp@apache.org
> http://dankulp.com/blog
> Talend - http://www.talend.com
>



-- 
Sergey Beryozkin

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

RE: Getting payload in the client side.

Posted by "Humagain, Himal" <hi...@jpmchase.com>.
Thank you very much Dan for your reply. I am able to hit the interceptor and set headers there and get it in the server. I still cannot get hold of content of the post in the interceptor level. This is what I have: 

//in my main method 
	String payload = "This is what I want in ICOutBoundInterceptor";
      WebClient xmlClient2 = WebClient.create(BASE_URI);    
  
      WebClient.getConfig(xmlClient2).getOutInterceptors().add(new ICOutBoundInterceptor(Phase.WRITE));
      String cResponse = xmlClient2.post(payload, String.class);              

//I want to get only the payload (content) part (The value of string payload (value: "This is what I want in ICOutBoundInterceptor") from main method) in //the handleMessage method of my interceptor (ICOutBoundInterceptor)

I want to create hash of only the payload not the output stream. It is because I found the output stream changes along the way until it reaches the server side. I tried that but the hash is never equal in the client side and server side. 

I will appreciate your help. 

Thanks, 


-----Original Message-----
From: Daniel Kulp [mailto:dkulp@apache.org] 
Sent: Friday, June 03, 2011 10:56 AM
To: users@cxf.apache.org; 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:sberyozkin@gmail.com]
> Sent: Thursday, June 02, 2011 4:43 PM
> To: Humagain, Himal
> Cc: Fabio souza; users@cxf.apache.org
> 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
> 
> <hi...@jpmchase.com> 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
dkulp@apache.org
http://dankulp.com/blog
Talend - http://www.talend.com

Re: Getting payload in the client side.

Posted by Daniel Kulp <dk...@apache.org>.
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:sberyozkin@gmail.com]
> Sent: Thursday, June 02, 2011 4:43 PM
> To: Humagain, Himal
> Cc: Fabio souza; users@cxf.apache.org
> 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
> 
> <hi...@jpmchase.com> 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
dkulp@apache.org
http://dankulp.com/blog
Talend - http://www.talend.com

RE: Spring autowiring

Posted by David Sills <DS...@datasourceinc.com>.
Christian:

Thanks, I wasn't looking for hot deploy, however. I was simply looking to be able to auto-discover web services when the server starts up, so that I could

1. Drop a JAR file into WEB-INF/lib
2. Restart the server

without having to modify the Spring configuration file. Can this be done? I could include additional Spring configuration in an XML file in the META-INF directory of the JAR, or perhaps annotate the classes in some way, or so I was thinking.

David


-----Original Message-----
From: Christian Schneider [mailto:cschneider@talend.com] 
Sent: Friday, June 03, 2011 9:12 AM
To: users@cxf.apache.org
Subject: AW: Spring autowiring

You can drop a war file in a Servlet Container  or a bundle jar into Karaf. This will make it execute without restarting the server.

Spring or CXF do are no containers so they do not offer direct support for hot deploy.

Christian



-----Ursprüngliche Nachricht-----
Von: David Sills [mailto:DSills@datasourceinc.com] 
Gesendet: Freitag, 3. Juni 2011 13:20
An: users@cxf.apache.org
Betreff: Spring autowiring

All:

I have been using the CXF non-Spring servlet and am now moving to the CXF Spring servlet. I'm not completely familiar with Spring's autowiring capabilities, but is there a way of adding a new web service to my server without explicitly modifying the Spring configuration? In other words, I'd like to be able to add a new web service by simply dropping it in, either reading configuration information from an XML in the JAR file or by reading annotations.

Has anyone tried something like this and gotten it to work?

Thanks!

David Sills


AW: Spring autowiring

Posted by Christian Schneider <cs...@talend.com>.
You can drop a war file in a Servlet Container  or a bundle jar into Karaf. This will make it execute without restarting the server.

Spring or CXF do are no containers so they do not offer direct support for hot deploy.

Christian



-----Ursprüngliche Nachricht-----
Von: David Sills [mailto:DSills@datasourceinc.com] 
Gesendet: Freitag, 3. Juni 2011 13:20
An: users@cxf.apache.org
Betreff: Spring autowiring

All:

I have been using the CXF non-Spring servlet and am now moving to the CXF Spring servlet. I'm not completely familiar with Spring's autowiring capabilities, but is there a way of adding a new web service to my server without explicitly modifying the Spring configuration? In other words, I'd like to be able to add a new web service by simply dropping it in, either reading configuration information from an XML in the JAR file or by reading annotations.

Has anyone tried something like this and gotten it to work?

Thanks!

David Sills


Spring autowiring

Posted by David Sills <DS...@datasourceinc.com>.
All:

I have been using the CXF non-Spring servlet and am now moving to the
CXF Spring servlet. I'm not completely familiar with Spring's autowiring
capabilities, but is there a way of adding a new web service to my
server without explicitly modifying the Spring configuration? In other
words, I'd like to be able to add a new web service by simply dropping
it in, either reading configuration information from an XML in the JAR
file or by reading annotations.

Has anyone tried something like this and gotten it to work?

Thanks!

David Sills


RE: Getting payload in the client side.

Posted by "Humagain, Himal" <hi...@jpmchase.com>.
I am using JAX-RS. 

-----Original Message-----
From: Sergey Beryozkin [mailto:sberyozkin@gmail.com] 
Sent: Friday, June 03, 2011 6:45 AM
To: Humagain, Himal
Cc: Fabio souza; users@cxf.apache.org
Subject: Re: Getting payload in the client side.

Do you use JAX-WS or JAX-RS ?

Cheers, Sergey

On Thu, Jun 2, 2011 at 10:05 PM, Humagain, Himal
<hi...@jpmchase.com> 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.
>
> I will really appreciate your response.
>
> 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.

Re: Getting payload in the client side.

Posted by Sergey Beryozkin <sb...@gmail.com>.
Do you use JAX-WS or JAX-RS ?

Cheers, Sergey

On Thu, Jun 2, 2011 at 10:05 PM, Humagain, Himal
<hi...@jpmchase.com> 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.
>
> I will really appreciate your response.
>
> Thanks,
> Himal
>

RE: Getting payload in the client side.

Posted by "Humagain, Himal" <hi...@jpmchase.com>.
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. 

I will really appreciate your response. 

Thanks, 
Himal 

-----Original Message-----
From: Sergey Beryozkin [mailto:sberyozkin@gmail.com] 
Sent: Thursday, June 02, 2011 4:43 PM
To: Humagain, Himal
Cc: Fabio souza; users@cxf.apache.org
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
<hi...@jpmchase.com> 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.
>

Re: Getting payload in the client side.

Posted by Sergey Beryozkin <sb...@gmail.com>.
Hi, Please use a logging feature

Cheers, Sergey

On Thu, Jun 2, 2011 at 6:55 PM, Humagain, Himal
<hi...@jpmchase.com> 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.
>

Getting payload in the client side.

Posted by "Humagain, Himal" <hi...@jpmchase.com>.
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.

Re: Extending CXF bus

Posted by Daniel Kulp <dk...@apache.org>.
On Thursday, June 02, 2011 4:46:51 PM Fabio souza wrote:
> Hi Dan,
> 
> First of all, thank you very much for your response! I guess I understood
> your proposal, but I still have one doubt. Using that solution the deployer
> of each service would have to include that file in the service's war file,
> right? 

Well, no.  If you stick that in YOUR jar, that should be enough.   If your jar 
is available in the classloader that starts up CXF's Bus, it will get picked 
up automatically and included.  

Dan


> I mean, I guess he must be aware of my StartupBean. In the case he
> doesn't remember to create the file, the service would not be monitored.
> Another point is that I would like to configure my chain of interceptors at
> runtime, and not just at deployment time. Well, I guess that at the point
> that you mentioned I could start an osgi runtime to support the required
> dynamism anyway.
> 
> Thank you, again!
> 
> Best regards,
> 
> Fábio
> 
> On Thu, Jun 2, 2011 at 2:49 PM, Daniel Kulp <dk...@apache.org> wrote:
> > With 2.4.x, this should be pretty easy to do.   If you create a
> > 
> > META-INF/cxf/bus-extensions.txt
> > 
> > that looks something like:
> > 
> > com.my.cool.monitoring.StartupBean::false
> > 
> > and that bean has a constructor that takes a Bus, when a Bus is created,
> > it would automatically find that bean and create it with the Bus param. 
> > You can
> > then add your interceptors to the Bus directly at  that point and wire in
> > whatever other things you need.
> > 
> > Dan
> > 
> > On Thursday, June 02, 2011 9:20:20 AM Fabio souza wrote:
> > > Hi,
> > > 
> > > I'd like to be able to dynamically monitoring different aspects related
> > 
> > to
> > 
> > > web services (e.g. response time, processing time, availability, etc).
> > > I would like that the set of possible monitoring aspects was an open
> > > end. I mean, I would like to be able to start monitoring something
> > > that wasn't planned before without stopping the service. I did
> > > something like that in the context of DOSGi. In fact, I modified DOSGi
> > > to include a customized interceptor (that I call the *chainer*) when
> > > an endpoint is going to be published. This interceptor is notified
> > > when a new *monitoring
> > 
> > interceptor*
> > 
> > > (an osgi service) is started and plug it in the corresponding chain of
> > > interceptors. In that way, the next request to this service will be
> > > monitored.
> > > 
> > > Well, I am considering to use the same idea out of an dosgi
> > > environment.
> > 
> > To
> > 
> > > do that, I plan to start an osgi context (that will be used to
> > > register my *Monitoring
> > > services*) when the CXF bus is started (however, I am not sure how I
> > 
> > could
> > 
> > > do that). Also, I plan to plug my chainer interceptor directly to the
> > 
> > bus,
> > 
> > > so that the developer of the services would not be necessarily aware of
> > 
> > the
> > 
> > > monitoring stuff. Could you please tell me if this idea seems to make
> > > sense? Is there some particular documentation that I could use?
> > > 
> > > Thank you, very much!
> > 
> > --
> > Daniel Kulp
> > dkulp@apache.org
> > http://dankulp.com/blog
> > Talend - http://www.talend.com

-- 
Daniel Kulp
dkulp@apache.org
http://dankulp.com/blog
Talend - http://www.talend.com

Re: Extending CXF bus

Posted by Fabio souza <fa...@gmail.com>.
Hi Dan,

First of all, thank you very much for your response! I guess I understood
your proposal, but I still have one doubt. Using that solution the deployer
of each service would have to include that file in the service's war file,
right? I mean, I guess he must be aware of my StartupBean. In the case he
doesn't remember to create the file, the service would not be monitored.
Another point is that I would like to configure my chain of interceptors at
runtime, and not just at deployment time. Well, I guess that at the point
that you mentioned I could start an osgi runtime to support the required
dynamism anyway.

Thank you, again!

Best regards,

Fábio

On Thu, Jun 2, 2011 at 2:49 PM, Daniel Kulp <dk...@apache.org> wrote:

>
> With 2.4.x, this should be pretty easy to do.   If you create a
>
> META-INF/cxf/bus-extensions.txt
>
> that looks something like:
>
> com.my.cool.monitoring.StartupBean::false
>
> and that bean has a constructor that takes a Bus, when a Bus is created, it
> would automatically find that bean and create it with the Bus param.  You
> can
> then add your interceptors to the Bus directly at  that point and wire in
> whatever other things you need.
>
> Dan
>
>
>
> On Thursday, June 02, 2011 9:20:20 AM Fabio souza wrote:
> > Hi,
> >
> > I'd like to be able to dynamically monitoring different aspects related
> to
> > web services (e.g. response time, processing time, availability, etc). I
> > would like that the set of possible monitoring aspects was an open end. I
> > mean, I would like to be able to start monitoring something that wasn't
> > planned before without stopping the service. I did something like that in
> > the context of DOSGi. In fact, I modified DOSGi to include a customized
> > interceptor (that I call the *chainer*) when an endpoint is going to be
> > published. This interceptor is notified when a new *monitoring
> interceptor*
> > (an osgi service) is started and plug it in the corresponding chain of
> > interceptors. In that way, the next request to this service will be
> > monitored.
> >
> > Well, I am considering to use the same idea out of an dosgi environment.
> To
> > do that, I plan to start an osgi context (that will be used to
> > register my *Monitoring
> > services*) when the CXF bus is started (however, I am not sure how I
> could
> > do that). Also, I plan to plug my chainer interceptor directly to the
> bus,
> > so that the developer of the services would not be necessarily aware of
> the
> > monitoring stuff. Could you please tell me if this idea seems to make
> > sense? Is there some particular documentation that I could use?
> >
> > Thank you, very much!
>
>
>
>
> --
> Daniel Kulp
> dkulp@apache.org
> http://dankulp.com/blog
> Talend - http://www.talend.com
>



-- 
Fábio

Re: Extending CXF bus

Posted by Daniel Kulp <dk...@apache.org>.
With 2.4.x, this should be pretty easy to do.   If you create a 

META-INF/cxf/bus-extensions.txt

that looks something like:

com.my.cool.monitoring.StartupBean::false

and that bean has a constructor that takes a Bus, when a Bus is created, it 
would automatically find that bean and create it with the Bus param.  You can 
then add your interceptors to the Bus directly at  that point and wire in 
whatever other things you need.

Dan



On Thursday, June 02, 2011 9:20:20 AM Fabio souza wrote:
> Hi,
> 
> I'd like to be able to dynamically monitoring different aspects related to
> web services (e.g. response time, processing time, availability, etc). I
> would like that the set of possible monitoring aspects was an open end. I
> mean, I would like to be able to start monitoring something that wasn't
> planned before without stopping the service. I did something like that in
> the context of DOSGi. In fact, I modified DOSGi to include a customized
> interceptor (that I call the *chainer*) when an endpoint is going to be
> published. This interceptor is notified when a new *monitoring interceptor*
> (an osgi service) is started and plug it in the corresponding chain of
> interceptors. In that way, the next request to this service will be
> monitored.
> 
> Well, I am considering to use the same idea out of an dosgi environment. To
> do that, I plan to start an osgi context (that will be used to
> register my *Monitoring
> services*) when the CXF bus is started (however, I am not sure how I could
> do that). Also, I plan to plug my chainer interceptor directly to the bus,
> so that the developer of the services would not be necessarily aware of the
> monitoring stuff. Could you please tell me if this idea seems to make
> sense? Is there some particular documentation that I could use?
> 
> Thank you, very much!




-- 
Daniel Kulp
dkulp@apache.org
http://dankulp.com/blog
Talend - http://www.talend.com