2011/08/05 - Jakarta Cactus has been retired.

For more information, please explore the Attic.


All work on Cactus is contributed by volunteers whose only motivation is to help make Cactus work even better, both for themselves and for rest of the community.

All contributions are welcome (see the Participating page). The final decision of what becomes part of the official distribution is made by a group of Committers. For more about Meritocracy, see the Management page on the Apache Jakarta Website.

Special thanks

Thanks to all that have reported bugs or suggested ideas for Cactus.

Thanks to all that have participated to the Cactus Logo competitions and especially Lyonel Thouvenot who had his logo up on the Cacus web site from 2002 to April 2005:

Proposition 1: Classic

Special thanks also to Eoghan McIlwaine who has designed the current Cactus logo.

And, of course ...

Thanks to the Apache Jakarta project for accepting the donation of J2EEUnit (renamed Cactus), thus giving it a home and more importantly a family.

More about us

Vincent Massol -- Committer (written in 2002)

I started designing internet applications in 1998, when I joined OCTO Technology, an Information System Architecture Consulting company, providing expert IT Solutions and Application Architects in the field of new technologies (Application Servers, EAI, Internet Relationship Management). Very soon, when working on customer projects, I introduced the concept of unit testing (using JUnit) as a good way of writing reliable code. Although it worked very well for unit testing "standard" java classes, it was much more difficult for classes that used container objects. Thus, I began developing a small generic framework to help unit test servlets. I improved the framework as I moved on, from customer to customer.

Until it was time to open source it! There were several drivers for that decision. As I spread the word about this framework within Octo, several octomen (and octowomen!) began using it and making modifications, and we ended up with several versions of it, making it difficult to synchronize them (although it was good for the evolutionary and darwinian side of it :) ). Another good reason was that I wanted to have feedback from the open source community and wanted to get help to improve it. Also, it was good to be able to provide to our customers a framework that would continue to evolve and be maintained even after we left the project. The last reason, maybe the strongest, is that I have always been fond of the open source concept and as Octo is providing consulting services, it did not clash with our business model !

Thus, I moved the project to SourceForge and called it J2EEUnit. It did well and more and more persons were downloading, participating and using it.

Now, most Applications Servers, EAI solutions or IRM ones are providing an infrastructure on which to build applications. But once you've bought the server, you're far from being finished ... There is the business logic code to write but there is also a lot of "glue" to implement. These are technical frameworks like a Controller of the MVC model, a logging framework, an XML-Java mapping one, application configuration, localization, templating, ... And usually these frameworks are not provided in the software package you buy. And even if they are (logging for example), they are not best of breed ones. For these frameworks, I have always been using open source solutions so far (Struts, Log4j, Ant, ...). Thus, I was lurking on Jakarta mailing-lists when I heard about a new project starting, called "Commons" which was to be a place where common components useful for several Jakarta projects would be found. I thought the idea of having a server-side java unit testing framework for Jakarta project (which are server side projects) was a good idea. I proposed to donate J2EEUnit to the Apache Software Foundation ... and I was lucky enough it was accepted ! :-)

However, the J2EEUnit name was infringing on the Sun trademark on J2EE so we had to change the name. It was changed to Cactus (see the Why the name? page for why this name). I found that in the move from SourceForge to Jakarta, I had found a new home for Cactus but, more importantly, I had found a family ! The sense of Community is very strong on Jakarta. You can feel right away the atmosphere and see it is different from other places.

Then, thanks to Cactus growing community, our efforts were rewarded and Cactus was accepted as a Jakarta top level project, alongside the renowned Tomcat, Ant, Struts, ... waowww !

We are now busy improving Cactus and looking for help. The first step was to get Cactus up and running and demonstrate it worked and is useful. This step has been achieved (I hope :) ). The second step is now to build a community around Cactus and find persons who are willing to actively participate in the future of it. Unit testing has still not reached the mainstream of development practices but is in the process of doing so with increasing interest in lightweight (also called "Agile") methodologies like Extreme Programming (XP). On the other hand, java server side programming is becoming stronger every day. This is to say that there is a bright future ahead for Cactus and there is still everything to invent.

Although the project started as a one-man project, my goal has always been to relinquish as much as possible my hold on Cactus and make it a community-wide project. This is a work in progess and I am proud to say that I am no longer the only committer on the project and several persons have jumped aboard and are already helping shape Cactus future. Come and help us ! :)

More info on my current open source involvements can be found here.

Nicholas Lesiecki -- Committer

I became involved in Cactus while co-authoring Java Tools for Extreme Programming. (See our resources section for details.) While researching the framework I found myself making some suggestions on the project's mailing list. One thing led to another, and now I am graced with commiter status.

I currently work as a Technical Team Lead at eBlox, Inc, a consulting and ecommerce application development shop. Right now I lead development of the company's flagship online catalog system, storeBlox. As such, I'm always working on new ways to test J2EE components, and so my involvement with Cactus is natural.

I'm excited about Cactus 2.0, which we hope will usher in the next phase in in-container testing by providing a more abstract framework for interacting with a wider variety of containers (EJB, JMS, etc. ).

Felipe Leme -- Committer (written in October 2005)

My first contact with unit testing happened in 2000, while working at Terraspring (a startup company later acquired by Sun), when my team was assigned to a manager with an XP background. At that time we were not using Cactus, only pure JUnit and some javascript unit testing tool. In 2002 I went back to Brazil, first working as consultant for an IT company in Sao Paulo and later (in 2004) as a System Architect for a telecomunications in Campinas, where I had my first contact with Cactus. As the company already used Cactus in the development process and was migrating the building process to Maven, I got more involved with these two projects, fixing a bug here and suggesting an improvement there. After a few months of colaboration, I was nominated a committer for the Maven Plugins and later for Cactus - in both cases the nomination was proposed by Vincent.

My main contributions were on the Maven integration, although I have done some stuff in the Ant integration as well. I wish I could do more, but unfortunately I am lacking the time to do so...

Petar Tahchiev -- Committer (written in January 2008)

I started working with Cactus when trying to apply for the Google summer of code programme in 2007. Felipe Leme was my mentor but the project that we proposed was not accepted by the ASF. So I started to contribute on my own, out of the programme. I set up a repository in SourceForge and managed for a little more than 10 months to migrate the build system to Maven2. I also wanted to write a Maven2 plugin for Cactus, but this one is still in my TODO list. At that time I finished the Cactus-Cargo integration, also closed a lot of bugs in the Jira improved the documentation, and made the new website.

I am now starting of thinking for the next release, and after that I want to start developing the next-generation Cactus - Cactus2.