You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by Jeffrey Born <je...@gmail.com> on 2014/01/14 18:12:55 UTC

Log the Request and Response object from eclipse generated client

Hi all,

I am having problems figuring out how to log the Request and Response
objects after successfully calling a .NET Web Service.  I created the
client using Eclipse Kepler that generated all the skeleton code for me.
 I'm using the 2.7.8 version of CXF and Java jdk1.7.0_45.

I've read a lot about interceptors and believe that is the way to go,
however I can't figure out how to add an interceptor to what is generated.
 Everything object generated in the client does not allow an interceptor to
be added.  It's like everything got generated at too high of a level for me
to add interceptors.

Not sure if this section of code will be useful to illustrate what I'm
seeing, but including in hopes that it is:

PhoneBookManagement ss = new PhoneBookManagement(wsdlURL, SERVICE_NAME);
PhoneBookManagementSoap port = ss.getPhoneBookManagementSoap();

com.pbsystems.yellow.wsdl.v1x0.PhoneBookVerificationByPhoneNumberRequest
_phoneBookVerificationByPhoneNumber_payload = new
com.pbsystems.yellow.wsdl.v1x0.PhoneBookVerificationByPhoneNumberRequest();

I'd like to log the _phoneBookVerificationByPhoneNumber_payload SOAP
request to the DB at this point, and all I see are my getters and setters

com.pbsystems.yellow.wsdl.v1x0.PhoneBookVerificationResponse
_phoneBookVerificationByPhoneNumber__return =
port.phoneBookVerificationByPhoneNumber(_phoneBookVerificationByPhoneNumber_payload);

After the call to the service I'd now like to log the
_phoneBookVerificationByPhoneNumber__return SOAP response object to the DB.

Thanks for any help with this!

Re: Log the Request and Response object from eclipse generated client

Posted by José Manuel Prieto <jo...@prietopalacios.net>.
Hi Jeffrey,

maybe this can help you:
http://cxf.apache.org/javadoc/latest/org/apache/cxf/management/persistence/class-use/ExchangeDataDAO.html
CXf implements some classes and interfaces to save information into DDBB.
I write in my blog (spanish) about this:
http://pupri.mycloudnas.com/2013/03/21/graba-en-bbdd-la-entrada-y-salida-en-el-log-del-web-service-con-apache-cxf/
Google translator is good.

For interceptor to custom log, look for implementation of this class:
org.apache.cxf.interceptor.LoggingInInterceptor
org.apache.cxf.interceptor.LoggingOutInterceptor
Get request or response SOAP and write into log.



2014/1/17 Jeffrey Born <je...@gmail.com>

> Well after a few days struggling with this I'm back to trying to capture
> the request object via the interceptor.  I've managed to add the
> interceptor to my code base and print the output stream.  I'm not
> knowledgeable with either Steams or Interceptors and would like to get a
> few questions answered to hopefully get this data logged to the DB.
>
> So first a little more background into what I'm trying to do: I don't want
> to log the request to the console or file or use log4j or Java's logger.
>  I'd like and object available to the web service client that can be logged
> to the a database in a larger transaction that will also include the
> response object.
>
> How do I gracefully expose a method or object to my main web service client
> that can use the data in the interceptor?
>
> And I believe I want to morph the OutputStream into a printable object?
>  Basically what is the best object to save to the Database and how do you
> get there from handleMessage in the interceptor?
>
> Thanks for the insights
>
>
> On Tue, Jan 14, 2014 at 1:17 PM, Jeffrey Born <je...@gmail.com> wrote:
>
> > Ah, I missed that I should be adding the Client object via the
> > getClient(port) method.
> >
> > Thanks much for nudging me in the correct direction.
> >
> >
> > On Tue, Jan 14, 2014 at 12:35 PM, José Manuel Prieto <
> > josemanuel@prietopalacios.net> wrote:
> >
> >>
> >>
> http://cxf.apache.org/docs/debugging-and-logging.html#DebuggingandLogging-LoggingMessages
> >>
> >> Client client = ClientProxy.getClient(port);
> >> client.getInInterceptors().add(new LoggingInInterceptor());
> >> client.getOutInterceptors().add(new LoggingOutInterceptor())
> >>
> >> In spring application context:
> >>     <cxf:bus>
> >>         <cxf:outInterceptors>
> >>             <ref bean="logOutbound"/>
> >>         </cxf:outInterceptors>
> >>     </cxf:bus>
> >>
> >> or:
> >>     <cxf:bus>
> >>        <cxf:features>
> >>           <cxf:logging />
> >>        </cxf:features>
> >>     </cxf:bus>
> >> http://cxf.apache.org/docs/bus-configuration.html
> >> http://cxf.apache.org/docs/configuration-of-the-bus.html
> >>
> >>
> http://www.ibm.com/developerworks/webservices/library/ws-apache-cxf-logging/index.html?ca=
> >>
> >> To create a custom log interceptor:
> >> http://cxf.apache.org/docs/interceptors.html
> >>
> >> ;)
> >> JMPrieto
> >>
> >>
> >>
> >> 2014/1/14 Jeffrey Born <je...@gmail.com>
> >>
> >> > Hi all,
> >> >
> >> > I am having problems figuring out how to log the Request and Response
> >> > objects after successfully calling a .NET Web Service.  I created the
> >> > client using Eclipse Kepler that generated all the skeleton code for
> me.
> >> >  I'm using the 2.7.8 version of CXF and Java jdk1.7.0_45.
> >> >
> >> > I've read a lot about interceptors and believe that is the way to go,
> >> > however I can't figure out how to add an interceptor to what is
> >> generated.
> >> >  Everything object generated in the client does not allow an
> >> interceptor to
> >> > be added.  It's like everything got generated at too high of a level
> >> for me
> >> > to add interceptors.
> >> >
> >> > Not sure if this section of code will be useful to illustrate what I'm
> >> > seeing, but including in hopes that it is:
> >> >
> >> > PhoneBookManagement ss = new PhoneBookManagement(wsdlURL,
> SERVICE_NAME);
> >> > PhoneBookManagementSoap port = ss.getPhoneBookManagementSoap();
> >> >
> >> >
> com.pbsystems.yellow.wsdl.v1x0.PhoneBookVerificationByPhoneNumberRequest
> >> > _phoneBookVerificationByPhoneNumber_payload = new
> >> >
> >>
> com.pbsystems.yellow.wsdl.v1x0.PhoneBookVerificationByPhoneNumberRequest();
> >> >
> >> > I'd like to log the _phoneBookVerificationByPhoneNumber_payload SOAP
> >> > request to the DB at this point, and all I see are my getters and
> >> setters
> >> >
> >> > com.pbsystems.yellow.wsdl.v1x0.PhoneBookVerificationResponse
> >> > _phoneBookVerificationByPhoneNumber__return =
> >> >
> >> >
> >>
> port.phoneBookVerificationByPhoneNumber(_phoneBookVerificationByPhoneNumber_payload);
> >> >
> >> > After the call to the service I'd now like to log the
> >> > _phoneBookVerificationByPhoneNumber__return SOAP response object to
> the
> >> DB.
> >> >
> >> > Thanks for any help with this!
> >> >
> >>
> >
> >
>

Re: Log the Request and Response object from eclipse generated client

Posted by Jeffrey Born <je...@gmail.com>.
Well after a few days struggling with this I'm back to trying to capture
the request object via the interceptor.  I've managed to add the
interceptor to my code base and print the output stream.  I'm not
knowledgeable with either Steams or Interceptors and would like to get a
few questions answered to hopefully get this data logged to the DB.

So first a little more background into what I'm trying to do: I don't want
to log the request to the console or file or use log4j or Java's logger.
 I'd like and object available to the web service client that can be logged
to the a database in a larger transaction that will also include the
response object.

How do I gracefully expose a method or object to my main web service client
that can use the data in the interceptor?

And I believe I want to morph the OutputStream into a printable object?
 Basically what is the best object to save to the Database and how do you
get there from handleMessage in the interceptor?

Thanks for the insights


On Tue, Jan 14, 2014 at 1:17 PM, Jeffrey Born <je...@gmail.com> wrote:

> Ah, I missed that I should be adding the Client object via the
> getClient(port) method.
>
> Thanks much for nudging me in the correct direction.
>
>
> On Tue, Jan 14, 2014 at 12:35 PM, José Manuel Prieto <
> josemanuel@prietopalacios.net> wrote:
>
>>
>> http://cxf.apache.org/docs/debugging-and-logging.html#DebuggingandLogging-LoggingMessages
>>
>> Client client = ClientProxy.getClient(port);
>> client.getInInterceptors().add(new LoggingInInterceptor());
>> client.getOutInterceptors().add(new LoggingOutInterceptor())
>>
>> In spring application context:
>>     <cxf:bus>
>>         <cxf:outInterceptors>
>>             <ref bean="logOutbound"/>
>>         </cxf:outInterceptors>
>>     </cxf:bus>
>>
>> or:
>>     <cxf:bus>
>>        <cxf:features>
>>           <cxf:logging />
>>        </cxf:features>
>>     </cxf:bus>
>> http://cxf.apache.org/docs/bus-configuration.html
>> http://cxf.apache.org/docs/configuration-of-the-bus.html
>>
>> http://www.ibm.com/developerworks/webservices/library/ws-apache-cxf-logging/index.html?ca=
>>
>> To create a custom log interceptor:
>> http://cxf.apache.org/docs/interceptors.html
>>
>> ;)
>> JMPrieto
>>
>>
>>
>> 2014/1/14 Jeffrey Born <je...@gmail.com>
>>
>> > Hi all,
>> >
>> > I am having problems figuring out how to log the Request and Response
>> > objects after successfully calling a .NET Web Service.  I created the
>> > client using Eclipse Kepler that generated all the skeleton code for me.
>> >  I'm using the 2.7.8 version of CXF and Java jdk1.7.0_45.
>> >
>> > I've read a lot about interceptors and believe that is the way to go,
>> > however I can't figure out how to add an interceptor to what is
>> generated.
>> >  Everything object generated in the client does not allow an
>> interceptor to
>> > be added.  It's like everything got generated at too high of a level
>> for me
>> > to add interceptors.
>> >
>> > Not sure if this section of code will be useful to illustrate what I'm
>> > seeing, but including in hopes that it is:
>> >
>> > PhoneBookManagement ss = new PhoneBookManagement(wsdlURL, SERVICE_NAME);
>> > PhoneBookManagementSoap port = ss.getPhoneBookManagementSoap();
>> >
>> > com.pbsystems.yellow.wsdl.v1x0.PhoneBookVerificationByPhoneNumberRequest
>> > _phoneBookVerificationByPhoneNumber_payload = new
>> >
>> com.pbsystems.yellow.wsdl.v1x0.PhoneBookVerificationByPhoneNumberRequest();
>> >
>> > I'd like to log the _phoneBookVerificationByPhoneNumber_payload SOAP
>> > request to the DB at this point, and all I see are my getters and
>> setters
>> >
>> > com.pbsystems.yellow.wsdl.v1x0.PhoneBookVerificationResponse
>> > _phoneBookVerificationByPhoneNumber__return =
>> >
>> >
>> port.phoneBookVerificationByPhoneNumber(_phoneBookVerificationByPhoneNumber_payload);
>> >
>> > After the call to the service I'd now like to log the
>> > _phoneBookVerificationByPhoneNumber__return SOAP response object to the
>> DB.
>> >
>> > Thanks for any help with this!
>> >
>>
>
>

Re: Log the Request and Response object from eclipse generated client

Posted by Jeffrey Born <je...@gmail.com>.
Ah, I missed that I should be adding the Client object via the
getClient(port) method.

Thanks much for nudging me in the correct direction.


On Tue, Jan 14, 2014 at 12:35 PM, José Manuel Prieto <
josemanuel@prietopalacios.net> wrote:

>
> http://cxf.apache.org/docs/debugging-and-logging.html#DebuggingandLogging-LoggingMessages
>
> Client client = ClientProxy.getClient(port);
> client.getInInterceptors().add(new LoggingInInterceptor());
> client.getOutInterceptors().add(new LoggingOutInterceptor())
>
> In spring application context:
>     <cxf:bus>
>         <cxf:outInterceptors>
>             <ref bean="logOutbound"/>
>         </cxf:outInterceptors>
>     </cxf:bus>
>
> or:
>     <cxf:bus>
>        <cxf:features>
>           <cxf:logging />
>        </cxf:features>
>     </cxf:bus>
> http://cxf.apache.org/docs/bus-configuration.html
> http://cxf.apache.org/docs/configuration-of-the-bus.html
>
> http://www.ibm.com/developerworks/webservices/library/ws-apache-cxf-logging/index.html?ca=
>
> To create a custom log interceptor:
> http://cxf.apache.org/docs/interceptors.html
>
> ;)
> JMPrieto
>
>
>
> 2014/1/14 Jeffrey Born <je...@gmail.com>
>
> > Hi all,
> >
> > I am having problems figuring out how to log the Request and Response
> > objects after successfully calling a .NET Web Service.  I created the
> > client using Eclipse Kepler that generated all the skeleton code for me.
> >  I'm using the 2.7.8 version of CXF and Java jdk1.7.0_45.
> >
> > I've read a lot about interceptors and believe that is the way to go,
> > however I can't figure out how to add an interceptor to what is
> generated.
> >  Everything object generated in the client does not allow an interceptor
> to
> > be added.  It's like everything got generated at too high of a level for
> me
> > to add interceptors.
> >
> > Not sure if this section of code will be useful to illustrate what I'm
> > seeing, but including in hopes that it is:
> >
> > PhoneBookManagement ss = new PhoneBookManagement(wsdlURL, SERVICE_NAME);
> > PhoneBookManagementSoap port = ss.getPhoneBookManagementSoap();
> >
> > com.pbsystems.yellow.wsdl.v1x0.PhoneBookVerificationByPhoneNumberRequest
> > _phoneBookVerificationByPhoneNumber_payload = new
> >
> com.pbsystems.yellow.wsdl.v1x0.PhoneBookVerificationByPhoneNumberRequest();
> >
> > I'd like to log the _phoneBookVerificationByPhoneNumber_payload SOAP
> > request to the DB at this point, and all I see are my getters and setters
> >
> > com.pbsystems.yellow.wsdl.v1x0.PhoneBookVerificationResponse
> > _phoneBookVerificationByPhoneNumber__return =
> >
> >
> port.phoneBookVerificationByPhoneNumber(_phoneBookVerificationByPhoneNumber_payload);
> >
> > After the call to the service I'd now like to log the
> > _phoneBookVerificationByPhoneNumber__return SOAP response object to the
> DB.
> >
> > Thanks for any help with this!
> >
>

Re: Log the Request and Response object from eclipse generated client

Posted by José Manuel Prieto <jo...@prietopalacios.net>.
http://cxf.apache.org/docs/debugging-and-logging.html#DebuggingandLogging-LoggingMessages

Client client = ClientProxy.getClient(port);
client.getInInterceptors().add(new LoggingInInterceptor());
client.getOutInterceptors().add(new LoggingOutInterceptor())

In spring application context:
    <cxf:bus>
        <cxf:outInterceptors>
            <ref bean="logOutbound"/>
        </cxf:outInterceptors>
    </cxf:bus>

or:
    <cxf:bus>
       <cxf:features>
          <cxf:logging />
       </cxf:features>
    </cxf:bus>
http://cxf.apache.org/docs/bus-configuration.html
http://cxf.apache.org/docs/configuration-of-the-bus.html
http://www.ibm.com/developerworks/webservices/library/ws-apache-cxf-logging/index.html?ca=

To create a custom log interceptor:
http://cxf.apache.org/docs/interceptors.html

;)
JMPrieto



2014/1/14 Jeffrey Born <je...@gmail.com>

> Hi all,
>
> I am having problems figuring out how to log the Request and Response
> objects after successfully calling a .NET Web Service.  I created the
> client using Eclipse Kepler that generated all the skeleton code for me.
>  I'm using the 2.7.8 version of CXF and Java jdk1.7.0_45.
>
> I've read a lot about interceptors and believe that is the way to go,
> however I can't figure out how to add an interceptor to what is generated.
>  Everything object generated in the client does not allow an interceptor to
> be added.  It's like everything got generated at too high of a level for me
> to add interceptors.
>
> Not sure if this section of code will be useful to illustrate what I'm
> seeing, but including in hopes that it is:
>
> PhoneBookManagement ss = new PhoneBookManagement(wsdlURL, SERVICE_NAME);
> PhoneBookManagementSoap port = ss.getPhoneBookManagementSoap();
>
> com.pbsystems.yellow.wsdl.v1x0.PhoneBookVerificationByPhoneNumberRequest
> _phoneBookVerificationByPhoneNumber_payload = new
> com.pbsystems.yellow.wsdl.v1x0.PhoneBookVerificationByPhoneNumberRequest();
>
> I'd like to log the _phoneBookVerificationByPhoneNumber_payload SOAP
> request to the DB at this point, and all I see are my getters and setters
>
> com.pbsystems.yellow.wsdl.v1x0.PhoneBookVerificationResponse
> _phoneBookVerificationByPhoneNumber__return =
>
> port.phoneBookVerificationByPhoneNumber(_phoneBookVerificationByPhoneNumber_payload);
>
> After the call to the service I'd now like to log the
> _phoneBookVerificationByPhoneNumber__return SOAP response object to the DB.
>
> Thanks for any help with this!
>