We are in the early process of designing a highly transactional/highly available application. The customer has already deployed Tomcat for informational web sites, and is happy with that. He wants to pursue with Tomcat for this highly transactional application.
Experts in my company are advising me to move out from Tomcat and select a J2EE app server (with JTA capabilities) like JBOSS, Weblogic or WebSphere, and eventually complement it with Tomcat for presentation only jsp.
I am looking for market best practices and input on this issue before advising the best solution.
thanks for your help
Well, if it's 'highly transactional' application then keep in mind that Tomcat doesn't come with JTA Transaction Manager implementation. There are TMs available which could be integrated with Tomcat (Jotm, Jencks) but it's up to you to decide if they are ready for a prime time.
Depends on your budget.. BEA and IBM charging WLS and WS several thousands per CPU.. Not sure about exact requirements of highly transactional application, but if you’ll need 2-pahse commits can make use of declarative transactions etc. pricey J2EE containers might worth money. About highly available – if it’s only about uptime %% you might get away with number of Tomcats behind load balancer, but if you can’t allow user notice lost session - WLS/WS. I worked with both, more with WLS and as developer I’d prefer WLS, but WS got better lately (v 5, 6) and also wouldn’t be a bad choice.
About jBoss I can’t speak from personal experience, but heard both bad and good thinks
Good - it’s free. Most of the bad – scalability .. not sure through was source of complains jBoss or just lack of expertise with jBoss/J2EE
app server is as important as what goes in it..our project is mission critical and we use Spring/hibernate/acegi ..which appens to be deployed in Weblogic(only because the project can afford it).. but u can have the same 'mission critical'(high avaliability & scabability) with Tomcat 5 or Jboss.
You can cluster Tomcat, having multiple instances running at once. When one becomes unavailable, another is used automatically.
See here: http://tomcat.apache.org/tomcat-5.0-doc/cluster-howto.html
There are may more resources available if you search Google for Tomcat Clustering