GSoC2009 accepted proposal for Apache Software Foundation
Abstract
Nowadays, the reliability of web applications is very important. The best way to detect failures early is to monitor. Adding the monitoring feature to Cocoon 3 gives developers and administrators a great tool for detecting errors and failures. Using JMX enables us to:
- automatically inform about the occurrence of problems (via notification mechanisms)
- collect statistics about the system (eg. load, connections and data flow)
- inspect: the actual state of cache, settings and perform certain operations (eg. cleaning cache).
Detailed Information
The main goal of the project is to deliver a fully functional and configurable Cocoon 3 monitoring module. Its basic functions would be:
- browsing the content of cache keys being in use with the possibility of cleaning their key/content
- sharing base information about Servlet-Services like points of mount or connections
- sharing statistics for cache and Servlet-Services like data transferred and hit count
- reviewing all settings and giving the possibility of changing logging (log4j) settings
Other optional features would be:
- role based access control
- notification systems in case of failure or critical errors
- expose list of active pipelines and statistics for each of them (like hit count and transferred data)
Features yet to be delivered:
- fully functional separate Cocoon 3 monitoring module that enables a description of functionality via MBeans and works with JConsole
- new structure of pipeline caching infrastructure with the ability of collecting statistics data and performing operations (like cleaning or removing)
- usage documentation
- javadoc
Nowadays, a number organizations and companies rely heavily on their web applications. For these companies, the early detection of fail overs and errors is very important – this could be achieved by a system of monitoring. Implementing a monitoring service into Cocoon 3 gives an additional argument for using it in highly reliable applications.
The first feature to be implemented in this project would the ability to show cache data, e.g. cache keys and their content. It would be also convenient to have the possibility to clean whole caches or one specific cache. This could be achieved by performing CacheRefreshJob.refresh(CacheKey) (as for now, there is only one implementation of this interface in Cocoon 3: AsyncCachePipeline<T>), the instances of this class can be obtained using the Spring dependency mechanism. But there is only one problem: one has to find a way to get the list of available CacheKeys. Therefore, some changes have to be implemented into the current Cocoon 3 cache infrastructure, which would give us the list of CacheKeys and their content.
The next feature to be implemented would be an overview of available Servlet-Services. From the administrative point of view, it would be convenient to have this option with their mount points and connections for each Servlet-Service. That could be achieved by making parsed parts of sitemap.xmap on JMX service available. In the future, it could also be possible to reconfigure Servlet-Services’ mappings but, to achieve this, it would be necessary to enhance the Cocoon Spring Configurator. Also, it would be useful to have some statistics describing the current Cocoon 3 status. In JMX, stats about caches (eg. size of a single cache and size of all caches) and Servlet-Service (eg. hit count of single Servlet-Service) from probes inserted into Cocoon 3, could be published.
The last but not least feature that I would like to implement during the Google Summer of Code is the review of all Cocoon 3 settings. In the future, it would also be possible to reconfigure Cocoon settings using JMX.
These features I would like to implement during the Summer of Code but I have more ideas that I want to realize after Google Summer of Code if I only have opportunity to start developing (I have mentioned them as ‘optional’ in the abstract part).
About me
My name is Dariusz Łuksza and I am 23 years-old. I am studying Computer Science at the Western Pomerania University of Technology (Szczecin, Poland). I have been interested in computer programming for eight years now, at the age of 15 I started learning on my own Turbo Pascal, then moved to Perl, PHP, C/C++ and Java. For about two years I have been working in NCDC as a Java Developer. At work, I spend most of my time working with Google Web Toolkit but I also have some experience with JMX, Cocoon2 and other ASF software like log4j, Velocity and Maven2. Personally, I have been using Linux and Open Source software for six years and I would like to change my status from ‘passive user’ to ‘active OpenSource developer’. I am sure that I have the knowledge and skills required to accomplish this GSoC project. It would be a great honor for me to participate as a GSoC student in developing Cocoon 3 Monitoring module.
