BunnyX |
An XML Proxy Server that dynamically creates an XML based API from existing web applications |
About
Documentation
Tutorials Screen Shots Download
Dependencies
Profile Client Dependencies |
BunnyX Technologies.BunnyX uses and incorporates a number of different technologies to make the magic happen. The first technology involved was Java. As the base for the cross platform implementation, it allows the BunnyX proxy server to be compiled and run with no modifications as long as there is a supported virtual machine available. The proxy uses a feature called Non-blocking IO or NIO to accept connections from clients. The advantage of this is that it should be faster and scale better than running multiple threads as it is the operating system's responsibility to handle the NIO interface. The only disadvantage that comes with using NIO is that it cannot be used on an OS that doesn't support it and hence BunnyX will not run (or at least accept direct connections). BunnyX also uses a slew of technology published by the Apache foundation. The first such technology is used to automate compilation, testing and general build-related tasks, Apache Ant. The build file that was used with Ant is also available. Also used was Apache Jmeter, a performance testing suite that simulates user load by spawning threads to make requests. To ensure BunnyX was doing what it was supposed to do, unit tests were setup and incorporated using JUnit. For running the proxy, libraries published by Apache were used, including many from their Apache commons project. These were:
One of the first hurdles to doing what BunnyX aimed to do was the horrible HTML that was out there, not only in corporate web applications but on the Internet in general. After much pain working with JTidy (no offense to any Tidy people, excellent project and the initial choice) it was realized only an HTML SAX parser would come close to the performance requirements needed to make the stuff BunnyX wanted to do feasible. Enter Hotsax. Finally, as the XML-RPC implementation matured, saving session state and caching XML pages became important (as XML-RPC, using HTTP, is stateless). For this, HSQL database engine was used. For organizations who need a more scalable solution, the configuration allows any database to be used, as long as it provides a JDBC interface and has the tables setup as described in the SQL script. This, dear reader, is why BunnyX is about 100 Kb compiled and has over 6 Mb of dependencies. |