I've been developing java apps for nigh on ten years now, right from the start at java 1.0. In that time we have seen weblogic 4,5,6,7,8,9 and many incarnations of jboss try and battle it out as the app server of choice.
Ignoring, obviously, the complete abortion that is websphere.
The industry has come a long way in that tiime, and the goal of a really fast, and decent app server for hosting pretty normal applications.
Now, like most developers, I tend to look for something that 1) doesnt break when doing 'normal stuff' and b) is fast to run and especially startup.
I think for the last year I have been wandering if weblogic 8&9 was really the way to go. My mindset was the following:
- Senior management in organisations like BT and Dresdner have been trying to cut license costs.
- J2EE has really ignored EJB 2 for a couple of years now, and moved to more basic OO/DB mappings, and now in my view hib3/ebj3-annotations is the way to go
- Webapps use xfire instead of proprietory webservice engines (like weblogic's ejb exposure)
- JMS engines have moved out of the app server into core JMS engines, like SpiritWave, so in built JMS is now defunct.
So what does this mean? Well for me, this means a WAR file with no vendor specifics (like jboss.xml, weblogic.xml etc) is the deployment of choice.
Yeah, I know you dont even need to even do that; and could use spring started up from java-main with an embedded webserver, may even be the next iteration, but lets not go there right now.
So, you want many instances of a small, fast war container. Like many people, I tend to front the container with apache (or at least some sane webserver), not least to expose port 80 only to the outside world. This means for virtual hosting you should really need to pass http header info of the original request to the app server. For me this means ajp or weblogic proprietory plug for apache
So, for the past few weeks, I've been evaluating (aka playing) with latest versions of tomcat, weblogic, jboss and jetty.
JBOSS
Jboss is a pig. full stop. One word: classloaders.
Weblogic
Its really good. Its really fast to run, but startup time is slow. No I mean it. its starts slowly, thats its only downside
Tomcat
Tomcat does run well, and it starts up pretty quickly too, but its a pain to configure, especially with virtual hosting
Jetty
Jetty is blindingly fast to run, and blindingly fast to startup. 6.1 has ajp support, so as a virtual hoster it works well. Oh, and jetty is rather embedable.. there's a migration for you.
Conclusion
Jetty does it for me. Of course this will be out of date once I post it.. But hey, thats the fun of this job.