Google Summer of Code 2010
Universidad Politécnica de Madrid
Amila Suriarachchi <amilas AT apache DOT org>
Distributed TCP Monitor for SOA Developers
Debugging a complex, composite, multi-hop SOA application is not an easy task. In such complex environments a tool which provides the ability to isolate what is happening when one injects a specific input to a SOA environment with different levels of details is extremely valuable. This project proposes an extensible tool for debugging/testing SOA applications which provides multiple views of message interactions in a SOA environment for a user-specified input.
Debugging a complex, composite, multi-party SOA application is not an easy task. You may not only have to capture messages that are routing through different nodes, but also to capture the messages which are generated as a result of subsequent implicit Web service invocations at different hops, plus some means of correlating them together.
One way of doing is to annotate a message with some special header (which could be a SOAP header or HTTP header) and inject it to a SOA environment. As the message passes through each node, some interceptors (which could be a Axis module, JAX-WS handler or AspectJ aspect) will be activated and start sending logs to central repository. Such logs will contain some metadata which is derived from the annotation of received messages hence can be easily correlated.
Subsequent implicit Web services invocations initiated by the primary input at different nodes will also get annotated hence will enable the interceptors in nodes which receive inputs of those implicit Web service invocations. In other words, the annotation is propagated like a chain-reaction enabling the interceptor at each node in the topology of the message flow to start sending message logs with some information for correlation.
A GUI client can be used as the viewer of the repository of log messages which shows the topology, properties of individual messages etc. which allows the SOA developer to know what exactly happened under the hood in their SOA applications. Further the SOA developers will be able to start viewing execution details such as logs related to JDBC query execution,JMS messaging etc by enabling few more interceptors to have an in-depth understanding of what exactly happened at a particular node(s). This project propose such a tool to test/debug SOA applications during development, testing stages.
Distributed TCP Monitor Architecture
- A light-weight, open source testing/debugging tool for SOA application developers
- Multiple views of multi-hop interactions in a SOA environment including message flow topology, SOAP node information, pretty-printed / plain text / property views of messages
- Ability to log messages flows belonged to a specific input message to the SOA environment
- User-friendly GUI for message views and tool configuration.
- Can be extended easily to capture other information (E.g. Response Time, JDBC query execution logs)
- Can easily support other WS stacks
- Core framework which includes components for logging, classes which represent the debug contexts, messaging repository
- Client GUI which reads the correlated data from the repository and produces a view of the topology, message properties and logs.
- Set of interceptors (Axis2 module, JAX-WS handlers, AspectJ aspects etc) that logs the messages and propagate the debug context.
- User guide
April 26 - May 3
Try to gather more detail knowledge on the technologies that is used for this project
May 4 – May 24
Establish the general framework.
- Define protocols : SOAP headers , mappings to HTTP headers and JMS properties.
- Define the structure of correlation identifiers
- Identify a strategy to delete / avoid duplicate logging
- Identify solutions for cases where message in not XML.
- Identify security implications and remedies.
May 25 – July 12
Build the generic frame work.
- Build components for (remote) logging
- Build classes to represent the contexts
- Build the repository and front-end to view intercepted messages.
July 13 – July 16
Reviews with the mentor(s) on what I've accomplished so far. Implement refinements if necessary.
July 17 – August 8
Build a set of Interceptors which log messages and propagate the debug context.
- An Axis module
- JAX-WS handler
- AspectJ aspects
August 9 – August 16
Write user guide, improving code documentation
Amila Suriarachchi <amilas AT apache DOT org>
Andreas Veithen <veithen AT apache DOT org>
Srinath Perera <hemapani AT apache DOT org>
I am a second year masters student at Universidad Politécnica de Madrid specializing in Software Engineering. I did my bachelors at University of Moratuwa which is the leading technical university of the country with field specialization in Computer Science and Engineering. After graduation I joined software vendor company which develops software related to travel industry for which I worked for three years before being awarded a European Union scholarship to purse a masters course in Europe.
I am familiar with Java and Java related technologies such as Jakarta BSF, JDBC, Spring, OSGI and familiar with Web services frameworks such as Axis2. This project is a challenging but an interesting one. I am determined to put all my efforts, work hard on this project and make it a success.