views:

309

answers:

6

Hello,

I know this may be a recurring topic, but I have read a lot of articles and I still have doubts. Also, I would like to hear more recent opinions about this.

The main requirements of my application server are: flexible configuration, support for a extremely high number of concurrent users. It will be a system for the mobile communications industry, so it must have high availability as well.

I am going to develop a J2EE application and Open Source Applications Servers are my only option. I have use GlassFish for a very small project and I really liked it.

Thank you very much for your advise.

+2  A: 

If you really need J2EE/JEE (strictly speaking) then JBoss is a good option. If you don't need true J2EE/JEE then you would be well served by using Tomcat. SpringSource also provides an enterprise version of Tomcat with support named tc Server that would be a good option if you don't need true J2EE/JEE.

Taylor Leese
A: 

I like GlassFish

Xorty
+1  A: 

I actually recommend to go with GlassFish. Apart from your familiarity, it uses a NIO network infrastructure (Grizzly) which supports very high number of concurrent connections.

We primarily use JBoss, and I can tell you JBoss5 can support a pretty high number of connections, too (as far as I know, it also uses a NIO based connector).

There is also an EJB container called Resin, which is semi-opensource (basically they have open source version and proprietary version). People say it has excellent performance, but I haven't got the chance to investigate further.

My last point is, are you sure you want to go with JavaEE EJB container? We actually started off with JavaEE EJB container, but because of our performance requirement etc. we are now trying to migrate to Tomcat+Spring. EJB has restriction on threading model etc., which can become unwanted restriction if you have clients other than web browsers...

Until JavaEE5, you have only this "TimerService" for executing periodical tasks, and JMS for doing asynchronous stuff, which is very heavy weight and can become very annoying.

Enno Shioji
Resin is aiming for providing a JEE 6 Web Profile compliant product. When that is ready, that will be a very interesting platform.
Thorbjørn Ravn Andersen
A: 

My current thoughts:

  • Small, Fast to start and simple: Jetty
  • Bigger and more robust and very large knowledge base of users: Tomcat
  • Bigger again, more features, good enterprise support, slower to start: JBoss

All can support large user bases and all will do 95% of use cases well.

I'd start by default at the top and move down the list as your situation/requirements get more complex e.g. how much JEE support you need

Also if you are careful on not using any custom features changing at a later should be relatively simple.

This is purely based on my personal experience and is a bit simplistic - one could write books on this!

Pablojim
+1  A: 

If you're talking full boat JEE, then Glassfish.

GFv2.1 is rock solid, GFv3 is too young to say, but offers new JEE 6.

Actively developed, free and commercial support, good forums. Oracle has published it roadmap for it.

It's easy to use, easy to configure, well organized. Great console.

Really well documented, vast amounts of supplementary documents and article from folks working different aspects of it (Metro, Grizzly, JAX-RS, NetBeans, etc.)

NetBeans + Glassfish is a painless out of box experience to get started.

Offers clustering and all sorts of management options.

Will Hartung
+1  A: 

If you're looking for a Java EE server, you basically have two options: GlassFish or JBoss (Geronimo or Jonas just have too small communities and I'm not aware of serious references for them - which doesn't mean there aren't any - I wouldn't pick them). Both are serious platforms, support clustering and HA and have been used to build large scale clusters and offer commercial support if this matters.

Now, a quick summary of the various versions:

  • JBoss AS 5.1: Java EE 5 certified. Supports HA, clustering, comes with an admin console if you're XML averse (but doesn't support cluster setup through console yet)
  • GlassFish v2.1: Java EE 5 certified. Supports HA, clustering, better admin console than JBoss 5.1 (especially for the cluster setup, if this matters), great CLI tool.
  • GlassFish v3: Java EE 6 certified. Very new, doesn't support clustering, centralized administration. Version 3.0.1 to be released soon.
  • JBoss AS 6.0: Java EE 6 certified. Didn't reach General Availability yet. Can't say much about it for now, M2 might not be representative of final version.
  • GlassFish v3.1: Java EE 6 certified. Will add Centralized Administration / Clusters, High availability / State replication and more. To be released this year. See the official roadmap.

At the end, if you project won't go in production before 2011, I would consider Java EE 6. If not, then go for a Java EE 5 server. In any case, don't base your choice only on opinions of the web. Download both server, setup a clusters of at least four nodes on two machines (that's a minimum, use a bigger cluster if possible), run a benchmark with a representative proof of concept of your application. And don't hesitate to involve folks from JBoss and Oracle, I'm pretty sure they'll be happy to help at proving their solution is the best one :)

References

For JBoss, have a look at Bela Ban's talk Large clusters in JBoss (pdf) at JBoss World 2009. Also check the sessions from JBoss World 2010. For GlassFish, have a look at their stories and more specifically in the Telco. Contact Sun/Oracle and RedHat for more references.

Pascal Thivent
In any case, ensuring that your application runs perfectly on the reference implementation is not time bad spent.
Thorbjørn Ravn Andersen