It's Like Déjà Vu All Over Again
"You could probably waste an entire day on the preceding links alone. But why take chances? We also give you Paul Snively..." — John Wiseman, lemonodor
Tomcat isn't crap... but it's vital to know what Tomcat is. Tomcat is the reference implementation of a particular Java Servlet and Java Server Pages spec. That's it. It's intended to be readable and maintainable and fairly transparent. It is not intended to be particularly efficient or featureful beyond the bare bones of the specs.
Use of Tomcat in a commercial production environment is probably misguided, unless your feature and performance needs are quite light.
I've been using Resin since just before the 1.1 release (in fact, if you look at the change logs, you'll find my name a few times prior to the 1.1 release). Resin is now up to 2.1.1, and there's also an EJB 2.0-compliant product, Resin Enterprise. I can't recommend these highly enough. Resin is mature, stable, featureful, blindingly fast, extremely inexpensive, and the source code is available if you want or need to download it. It's been kind of a well-kept secret in the Java app server space for a couple of years now, but apparently the secret is getting out.