Skip to main content

Apache CXF client : Log XML request and response in database

Sometimes we have a senerio in which we need to log the request and response in DB or some where else, 
in order to see what request is sent to web service and what response we get. 
Apache CXF API provides us the facility to achieve this via using Interceptor (LoggingOutInterceptor and LoggingInInterceptor),
by default these classes write the request and response in the System.out stream, 
Now if you want to store them to DB then you can't use this stream you must need data in some string variable , 
Therfore we need to change the write stream of Interceptor so that we can keep request and response in some string variable.

String wsdlURL= "http://localhost:8084/MytestApp/artworkService";

JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();

 //Bind Service class
factory.setServiceClass(MyService.class);

//Bind WSDL      
factory.setAddress(wsdlURL);                            
 
//Change logging strean
Writer outResult = new StringWriter();
PrintWriter printOutWriter = new PrintWriter(outResult);
factory.getOutInterceptors().add(new LoggingOutInterceptor(printOutWriter));
        
Writer inResult = new StringWriter();
PrintWriter printInWriter = new PrintWriter(inResult);
factory.getInInterceptors().add(new LoggingInInterceptor(printInWriter));
 
MyService myService = (MyService) factory.create();

//Call Service
my.hello('Jaspreet Singh');                                
 
// Print Request and Response or you call your DB service for logging
System.out.println(inResult.toString());
System.out.println(outResult.toString());

Comments

Popular posts from this blog

Encode from JavaScript and Decode at Java.

if you have a senerio like you want to send encoded parameter values from your web page  and decode them  at server side then this blog may be help you. JavaScript: Before submit the form I am encoding all the value entered by user so that it can not be read by humanly, for encoding the values I have written a method named  encodeBase64 <script> function encodeBase64(input){         var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";         input = escape(input);         var output = "";         var chr1, chr2, chr3 = "";         var enc1, enc2, enc3, enc4 = "";         var i = 0;              do {             chr1 = input.charCodeAt(i++);             chr2 = input.charCodeAt(i++);     ...

Setup Jenkins in Tomcat Webserver

Jenkins is a software that allows continuous integration. Jenkins will be installed on a server where the central build will take place. System Requirements: 1. JDK 2. Tomcat Java installation : 1. Download the latest JDK from Oracle's site 2. CentOS look for the package jdk-7u17-linux-x64.rpm (64-bit architecture) or jdk-7u17-linux-i586.rpm (32-bit architecture) 3. Once you download the installation package, use the command rpm -ivh 4. Confirm you have the correct Java by running java -version Tomcat installation: 1. Download Apache Tomcat archive file from Apache Tomcat official download page. You can use below wget command to download it. cd /tmp wget http://www.us.apache.org/dist/tomcat/tomcat-7/v7.0.54/bin/apache-tomcat-7.0.54.tar.gz 2. After competed download extract archive file in /tmp directory and move to proper location as per your need. We are placing this under /usr/local directory. tar xzf apache-tomcat-7.0.54.tar.gz mv apache-t...

Restful WADL WebService that serves the XML

In this tutorial, I am showing you how to develop a simple  RESTFUL web application that serves the XML request and response Jar files required : cxf-bundle-2.7.3.jar httpasyncclient-4.0-beta3.jar httpclient-4.2.1.jar httpcore-4.2.2.jar httpcore-nio-4.2.2.jar javax.ws.rs-api-2.0-m10.jar jaxb-impl-1.0.6.jar jettison-1.3.3.jar neethi-3.0.2.jar org-apache-commons-logging.jar xmlschema-core-2.0.jar 1. Creating a simple Bean class package com.student; import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement (name = "Student" ) public class Student {   private String name ;   public String getName() {     return name ;   }   public void setName(String name ) {     this . name = name ;   } } 2.  Create a Web Service Endpoint Interface package com.student; public interface ChangeStudentDetails {   Student changeName(Stude...