Apache Olio: Web 2.0 toolkit for Java EE
By MandyWaite on May 14, 2009
This week saw the Apache Olio project release the code for it's Java EE version adding to the versions already available for PHP and Rails.
If you know Apache Olio and want to know more about the specifics of the Java EE version then I'll cover them first, if you want to know more about Apache Olio in general, read on.
To run the Java EE version of Olio, you'll need:
- Java SE 5 or 6
- Java EE 5 compliant application server (tested so far with GlassFish v2)
- A Java Persistence API (JPA) provider (Eclipselink is the JPA provider packaged with GlassFish v2)
- MySQL Database (any DB could be used but we have scripts and instructions for MySQL)
Some of the technologies that the Java EE version features:
- JPA for the Object-Relational persistence solution
- Rest based Services (partially implemented)
- JMaki widgets wrappers for Yahoo and dojo widgets
In planning are the following changes/features:
- Re-implementation of the memcached layer for caching (this was stripped out for this release but needs to be put back)
- Rest based services with JSR-311, JAX-RS. I've started this already using the Jersey implementation.
- Replacement of the jMaki widgets with appropriate alternative
- Minor features to 'catch up' with the PHP and JRuby version.
- Investigation of file distribution system eg. Hadoop (current implementation only uses local filesystem)
If you want to get involved then visit our page at http://incubator.apache.org/olio/
You can contibute patches, submit bugs or RFEs or just generally tell us what components you have successfully used the app with.
What is Apache Olio?
Apache Olio is a Web 2.0 toolkit, basically it's a Web 2.0 application and a load generator. You deploy the application to a configuration that you want to test, fire up the load generator, drive load to the application and then analyze the results. The application isn't that fussy about what it runs on, for the Java EE app you need a Java EE Web container (Glassfish or Tomcat for example), you also need a Database and a schema is provided that can be used to set that up. You need a filestore and you need a Web Server to act as a remote Web Service (for looking up geolocations).
Apache Olio uses Faban to drive load along with a custom Faban driver. Faban is a benchmark driver framework and harness that is designed to allow you to model the usage of your application and drive load for 1000s of simulated users. It also can be used to manage the runtime environment and it gathers the results from test runs.
Once you've deployed the application you can load it up with dummy users and events (it's a Social Networking app) and use the driver to simulate load. At the end of a test run, you get all of the data from the run presented to you in graphical form (depending on the platform). I spend a vast amount of time using Olio and Faban and can't recommend them enough.
Kim is the lead developer of the Java EE version of Apache Olio and he has a blog entry that goes into lots of detail on how Apache Olio Java EE works and what it looks like.