Differences between revisions 1 and 2
Revision 1 as of 2007-07-10 14:40:14
Size: 4038
Editor: dns
Revision 2 as of 2009-09-20 22:48:43
Size: 4038
Editor: localhost
Comment: converted to 1.6 markup
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
[[TableOfContents]] <<TableOfContents>>
Line 3: Line 3:
[[AttachList(FrontPage/Axis/DynamicSSLConfig)]] <<AttachList(FrontPage/Axis/DynamicSSLConfig)>>
Line 7: Line 7:
See also ["FrontPage/Axis/DynamicSSLConfig"] for more information about the SSL setup. [[BR]]
See also ["FrontPage/Axis/Logging/Logging with SSL"] for more information about logging HTTP messages.
See also [[FrontPage/Axis/DynamicSSLConfig]] for more information about the SSL setup. <<BR>>
See also [[FrontPage/Axis/Logging/Logging_with_SSL]] for more information about logging HTTP messages.

  • [get | view] (2007-07-10 13:48:54, 12.3 KB) [[attachment:axistools-src.jar]]
  • [get | view] (2007-07-10 13:48:09, 16.4 KB) [[attachment:axistools.jar]]
  • [get | view] (2011-03-07 13:03:56, 30.3 KB) [[attachment:package.zip]]
  • [get | view] (2013-01-05 19:25:30, 3.3 KB) [[attachment:package33.zip]]
 All files | Selected Files: delete move to page

This page describes a HTTP logging facility created to aid in Axis development.

See also FrontPage/Axis/DynamicSSLConfig for more information about the SSL setup.
See also FrontPage/Axis/Logging/Logging_with_SSL for more information about logging HTTP messages.

The Problem

Axis comes with a LogHandler which can be used to dump SOAP requests/responses to a log file. Normally, this works very well, but has the following shortcomings:

  • All logs are written to the same file, to get at the trace you need requires finding it in the file, and then copy and pasting it into another program for formatting
  • Logs are not accessible to the application that created them

The Solution

A new Axis Handler was written for logging. Essentially, this is modelled on the original LogHandler class, with the following differences:

  • The logs are created in seperate files, each request and each response is stored in a seperate file
  • The last request and response are retained (as strings) within the Handler class. Accessor methods are provided to retrieve these strings

This allows an application to access the handler, and then access the logs

Usage / Configuration

To use the logging facility, add the classes downloaded from this page to your web service client application.

The following is a sample of using the in memory SOAP logging:

   1 // create config
   2 boolean logging = true; // activate logging
   3 SSLClientAxisEngineConfig axisConfig = new SSLClientAxisEngineConfig();
   4 axisConfig.setKeystore("/path/to/clientkey.p12");
   5 axisConfig.setKeystoreType("PKCS12");
   6 axisConfig.setKeystorePassword("changeit");
   7 axisConfig.setTruststore("/path/to/truststore.jks");
   8 axisConfig.setTruststoreType("JKS");
   9 axisConfig.setTruststorePassword("changeit");
  10 if (logging)
  11     axisConfig.setDebugBaseDir("/path/to/logs");
  12 axisConfig.initialize(logging);
  13 // initialize service
  14 URL soapURL = new URL("https://myserver.com/myapp/services/mywebserviceport");
  15 MyWebServiceServiceLocator locator = new MyServiceLocator(axisConfig);
  16 MyWebServicePort port = locator.getMyWebServicePort(soapURL);
  17 MyWebServiceBindingStub stub = (MyWebServiceBindingStub) port;
  18 // make a call to the webservice (assume no params for this operation)
  19 MyResultType result = stub.myoperation1();

Note: In the example above it is assumed that you have created the client stubs for the web service "MyWebService" using the Axis WSD!L2Java tool.

After the call to myoperation() the log directory specified should contain 2 more files, one with "request" in the filename (the request), and one with "response" in the filename, the response.

To access the logs within the application, do something like this:

   1 AxisDebugLogHandler handler = axisConfig.getLogHandler();
   2 String reqStr = handler.getReqMessage();
   3 String respStr = handler.getRespMessage();

You can now work with the SOAP message strings within your application, for example to log them to your own integrated logs, or display them to the user, or send them as part of an automated bug report, etc...


  • Logging occurs when response is received - no response probably means no logs
  • SOAP logs do not contain attachments or HTTP headers
  • Filenames for logfiles not configurable
  • /!\ Do not use in production setups! This code is ok for development, but logging should be switched off in productive setups

Comments, Feedback, Support

This code is supplied back to the apache foundation, without any support or warranty. Use at your own risk. The author and his employer assume no responsibility for damages resulting in the use of this code or these instructions.

Feel free to use the code in any way you want but do not expect support.

Should you have questions about the code, please feel free to contact me (the Author) at: runger --AT-- aon.at

FrontPage/Axis/Logging/In_Memory_Logging (last edited 2009-09-20 22:48:43 by localhost)