What led to my use of Tomcat started years before I had ever heard of Jakarta or Tomcat. I think it was late 1999 or early 2000 and inside E*TRADE there was a lively discussion going on for weeks in our hallways, in the conference rooms, and over email about standardizing on either servlets or enterprise java beans (EJB). I was crazy busy trying to get single sign-on and application federation server infrastructure installed at the time and was just hoping that the EJB/Servlet issue would resolve without any violence. The java application team standardized on servlets and the the resulting products were highly successful!
Around 2001, many of our peers in the industry went with EJBs and were having failed project after failed project. Our servlet-based software was running great, but was too expensive as we were on proprietary frameworks deployed over many nodes. To address costs we moved to open source, with Tomcat being a central part of that strategy. At that point, we really started feeling like we dodged a bullet by not adopting EJBs.
Open source EJBs were years away from being deployable and commercial ones were sketchy. Remember, this was the time of the PetStore reference EJB app and all of the theater around it. If you don’t remember PetStore, it's the app that made .NET look fantastic and allowed SpringSource to become a $362 million company!
So why didn’t we choose EJB’s over servlets? Because servlets were “good enough”. I started calling this “good enough computing”. In my area of Texas it’s jokingly pronounced “Good ‘nuff ‘putin’”.
The basic idea of "good 'nuff" is to argue requirements and scope in big tech projects until you are blue in the face. Requirements are time, complexity, money, and risk! All of these lead to failure before you even start your project. Simplicity should always take priority when making decisions.
Never assume simplicity is popular.
Over and over I’ve seen our industry, and really good engineers, fall into the inescapable gravity of overly complex technologies like they were black holes. Technologies like Corba, the orginal EJB specs, and segmented addressing. Currently, I’m trying to get my head around OSGi and if it's in the category of overly complex. For my work, which is probably only 30-40% java, OSGi doesn’t make a lot of sense. Other, simpler mechanisms are probably good ‘nuff.
So what did I learn from my first exposure to Tomact? Tomcat didn’t have EJB support, and that was good ‘nuff!