Design goals

There are a few major design goals that drive all architectural decisions for WTFIGO.

  • Simple installation - Basic installation must be as error-proof and simple as possible
  • Container agnostic architecture - The overall architecture is straight J2EE for maximum portability
  • Zero runtime dependencies - No other libraries should be required at runtime which could conflict with the app to be debugged
  • Container/library smart - When known libraries are available at runtime, they will be exploited. When they are not available, WTFIGO will degrade gracefully

Architecture

A description of the architecture will go here. In the meantime, here are some notes.



Filter was chosen because it is the least invasive and most container indendent method. Also, it is easy to remove WTFIGO before going into production. AOP was also considered and could still be used but would add dependencies.

Inspirado

The architecture and approach of WTFIGO has been highly influenced by several other projects

  • JTidyFilter has an interesting approach for how to really do a Buffered response with tees
  • JWhich from the xml-commons sandbox for several ideas around detecting installed resources
  • Netbeans as a nice HTTP Monitor built in
  • P6Spy is a JDBC connection wrapper that monitors JDBC calls.

Also, the Koders and JExample code search engines have been hugely helpful.