Title: Apache TomEE
Apache TomEE, pronounced "Tommy", is an all-Apache stack aimed at *Java EE
6 Web Profile* certification where Tomcat is top dog.
### Overview
{span:style=float: right; margin-left: 20px;}
{html}
Jonathan Gallimore and David Blevins @ JAX London, Spring 2011
{html}
{span}
{div}
Connector
Apache Geronimo Connector
CDI
Apache OpenWebBeans
EJB
Apache OpenEJB
Javamail
Apache Geronimo JavaMail
JPA
Apache OpenJPA
JSF
Apache MyFaces
JSP
Apache Tomcat
JSTL
Apache Tomcat
JTA
Apache Geronimo Transaction
Servlet
Apache Tomcat
### Extras
JMS
Apache ActiveMQ
Web Services
Apache CXF
{div}
{div:style=clear:both;}{div}
# Goal
Simple, Get more from Tomcat without giving anything up.
# Focuses
Some core focuses guide the integration:
- Don't mess with Tomcat
- Keep it simple
- Avoid architecture overhead
The desire to beef up Tomcat installations has persisted despite the
existence of full-blown app servers, many of which include Tomcat in some
truncated and stripped-down form. Not TomEE.
# Under the Covers
Apache TomEE is assembled from a vanilla Apache Tomcat zip file. No
picking and choosing individual parts of Tomcat and building a "new" server
leveraging Tomcat. We start with Tomcat, add our jars and zip up the rest.
The result is Tomcat with added EE features, TomEE.
Tomcat provides plenty of hooks for filling out parts of its lifecycle. We
leverage them all to fill the gaps. The result is a whole lotta sharing!
Servlets now get access to JPA and Transactions, EJBs get access to Tomcat
provided Security. Any Tomcat provided resources, say from a context.xml,
can be looked up or injected by *any* managed component in the system.
# Keep it Tight, Keep it Simple
There's a definite "less is more" philosophy in Apache TomEE. It's too
easy to go too far when developing an app server. The result is usually a
slow to start, memory hogging, beast. We're not here to create an ultra
flexible, super powerful, infinitely composable, be anything to anyone
platform. We're here to deliver Java EE 6 Web Profile in the simplest way
possible.
If you were to imagine taking a plain Tomcat install and integrating the
missing components in the most direct and to-the-point style possible,
you'd end up with TomEE. The result speaks for itself:
- Runs without any additional memory requirements
- Compatible with most Tomcat-aware tools
- Compatible with Tomcat-tested apps
# History
In Apache TomEE's previous life, it was simply known as the OpenEJB+Tomcat
integration. That description was always quite misleading. For one,
there's incredible benefit even if EJB is never used.
Quite simply, EJB as a technology integrates with the most number of specs
than any other spec. It touches JMS, Web Services, Connectors, Servlets
(EJB Web Services are still driven by Servlets!), JPA, JDBC, Transactions,
Security. Integrating with all these technologies takes time and expertise
and in the end has very little to do with EJB specifically. To apply this
all to Tomcat and leverage it all from a simple Servlet is a natural
extension and the reason most app servers started out as EJB servers.
Whereas most app servers pluck Tomcat out of its environment, Apache
OpenEJB has always existed as an embeddable container focused on being as
tiny and invisible as possible. The natural extension of this is to embed
the "EE" into Tomcat, rather than the other way around.
But in the end, it is not about EJB. It's about the other guys: ActiveMQ,
CXF, MyFaces, OpenJPA, OpenWebBeans, and of course Tomcat! So out with
OpenEJB+Tomcat and in with Apache TomEE!