Choosing an Open Source Application Server for Java EE

I know this may be a recurring theme, but I have read many articles and I still have doubts. In addition, I would like to hear the latest opinions on this.

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

I'm going to develop a Java EE application, and open source servers are my only option. I used GlassFish for a very small project, and I really liked it.

+6
java java-ee open-source application-server
source share
5 answers

My current thoughts are:

  • Small, fast and simple: Jetty
  • A larger and more reliable and very large user knowledge base: Tomcat
  • More, more options, good enterprise support, slower start: JBoss

Everyone can support large user bases, and they will all perform well 95% of the time.

I would start by default at the top and move down the list, as your situation / requirements become more complex, for example. how much Java EE support do you need

Also, if you are careful when using any custom functions, changing at a later point should be relatively simple.

This is purely based on my personal experience and a little simplified - you can write books about it!

+7
source share

If you are looking for a Java EE server, you have basically two options: GlassFish or JBoss (Geronimo or Jonas just have too small communities, and I don’t know any serious links to them, which doesn’t mean they don’t - I wouldn’t choose them). Both are serious platforms, support clusters, and HA, and have been used to create large-scale clusters and provide commercial support, if that matters.

Now, a summary of the various versions:

  • JBoss AS 5.1: Certified Java EE 5. Supports HA, clustering , comes with an admin console if you are unsure of XML (but does not yet support cluster configuration through the console)
  • GlassFish v2.1: Certified Java EE 5. Supports HA, clustering, a better admin console than JBoss 5.1 (especially for setting up a cluster, if that matters), a great CLI tool.
  • Certificate GlassFish v3: Java EE 6. Very new, does not support clustering, centralized administration. Version 3.0.1 will be released shortly.
  • JBoss AS 6.0: Certified Java EE 6. Has not yet reached general availability. While I can not say much about this, M2 may not represent the final version.
  • GlassFish v3.1: Certified Java EE 6. Central administration / clusters, high availability / state replication, and more will be added. Will be released this year. See the official roadmap .

In the end, if the project was not to be released before 2011, I would consider Java EE 6. If not, go to the Java EE 5 server. In any case, do not base your choice only on opinions on the Internet. Download both servers, configure clusters on at least four nodes on two machines (at least use a larger cluster, if possible), run a test with a representative proof of the concept of your application. And feel free to attract people from JBoss and Oracle, I'm sure that they will be happy to help prove that their solution is the best :)

References

For JBoss, take a look at Bela Ban's post Large Clusters in JBoss (pdf) in JBoss World 2009. Also check out sessions from JBoss World 2010 . For GlassFish, browse stories and more specifically at Telco . See Sun / Oracle and RedHat for more information.

+5
source share

If you really need Java EE (strictly speaking), JBoss is a good option. If you don't need true Java EE, Tomcat will be well served. SpringSource also provides an enterprise version of Tomcat with support called tc Server , which would be nice if you didn't need true Java EE.

+3
source share

I really recommend going with GlassFish. In addition to your acquaintance, it uses the NIO network infrastructure ( Grizzly ), which supports a very large number of simultaneous connections.

First of all, we use JBoss, and I can say that JBoss5 can support a fairly large number of connections (as far as I know, it also uses a NIO-based connector).

There is also an EJB container called Resin , which is half-open (mostly they have an open source version and a proprietary version). People say that this is great performance, but I have no way to investigate further.

My last point: are you sure you want to go with the JavaEE EJB container? We actually started with the JavaEE EJB container, but because of our performance requirement, etc. We are now trying to upgrade to Tomcat + Spring. EJB has a restriction on the streaming model, etc., which can become an undesirable restriction if you have clients other than web browsers ...

Prior to JavaEE5, you only have this “TimerService” for periodic tasks, and JMS for asynchronous use, which is very heavy and can become very annoying.

+2
source share

If you say a full boat of Java EE, then Glassfish.

GFv2.1 is solid, GFv3 is too young to speak, but offers the new Java EE 6.

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

It is easy to use, easy to set up, well organized. Great console.

In fact, a huge amount of additional documents and articles from people working with various aspects (Metro, Grizzly, JAX-RS, NetBeans, etc.) are well documented.

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

It offers clustering and all kinds of management options.

+2
source share

All Articles