Announcement Announcement Module
No announcement yet.
web service conversation logging (interceptor or proxy?) Page Title Module
Move Remove Collapse
Conversation Detail Module
  • Filter
  • Time
  • Show
Clear All
new posts

  • web service conversation logging (interceptor or proxy?)

    Good day,

    I have a web service (Spring + CXF) which has a 3-layer processing tier:

    Dispatcher -> Service -> Processor

    Chain of actions:
    • Request hits Dispatcher
    • Dispatcher validates, then gives request data to Service
    • Service writes data to DB, and chooses a Processor to process the data
    • Processor finishes, and returns a response to the Service
    • The Service writes the response to the DB
    • Service returns response to Dispatcher
    • Dispatcher returns response to client

    Everything works fine and dandy and we're using this in production to distribute our payments amongst various payment providers.

    The issue is that I have log statements scattered throughout the code. The problem with this is that the logs are "mixed" for every request.

    I'm looking for a solution to bundle the log messages together and write them out once.
    One solution is to create a StringBuilder (one thread per request, thus safe) instance in the Dispatcher and carry this all the way throughout the execution stack, append log messages to the instance where-ever, then before the Dispatcher returns I write it out.

    However, this is intrusive and I would need to change my API.

    I was wondering if there's a way to do something similar to a method trace interceptor, but instead of doing one method, do an entire conversation. Does Spring provide such functionality?

    All-in-all I want to replace all calls to:


    then write it out once at the very end:

    On an aside, CXF has it's own SOAP logging (for which I submitted a patch here: ) which I can hopefully ingrate into my "bundled log" solution.