We use Tomcat to host our WAR based applications. We are servlet container compliant J2EE applications with the exception of org.apache.catalina.authenticator.SingleSignOn.
We are being asked to move to a commercial Java EE application server.
- The first downside to changing that I see is the cost. No matter what the charges for the application server, Tomcat is free.
- Second is the complexity. We don’t use either EJB nor EAR features (of course not, we can’t), and have not missed them.
What then are the benefits I’m not seeing?
What are the drawbacks that I haven’t mentioned?
Mentioned were…
- JTA – Java Transaction API – We control transaction via database stored procedures.
- JPA – Java Persistence API – We use JDBC and again stored procedures to persist.
- JMS – Java Message Service – We use XML over HTTP for messaging.
This is good, please more!
Unless you want EJB proper, you don’t need a full stack J2EE server (commercial or not).
You can have most J2EE features (such as JTA, JPA, JMS, JSF) with no full stack J2EE server. The only benefit of a full stack j2ee is that the container will manage all these on your behalf declaratively. With the advent of EJB3, if you need container managed services, using one is a good thing.
You can also have no cost full stack server such as Glasfish, Geronimo or JBoss.
You can also run embedded j2ee container managed services with embedded Glasfish for example, right inside Tomcat.
You may want an EJB container if you want to use session beans, message beans, timer beans nicely managed for you, even with clustering and fail over.
I would suggest to the management to consider upgrades based on feature need. Some of these EJB containers might just well use embedded Tomcat as their webserver so what gives!
Some managers just like to pay for things. Ask them to consider a city shelter donation or just go for BEA.