Very often, when talking/training/sharing about Java EE, I get the same question: What about clustering in Java EE? The answer is: nothing, rien, nada, ezer, nista, niets! There is nothing about clustering (failover, load-balancing…) in JavaEE. And to prove it, I’ve looked for the word “cluster” in the 4.171 pages of the 19 more important Java EE 7 specifications. The word “cluster” only appears once :
EE.5.2.2 – Application Component Environment Namespaces
(…)
java:global – Names in this namespace are shared by all applications deployed in an application server instance. Note that an application server instance may represent a single server, a cluster of servers, an administrative domain containing many servers, or even more
As you can see, there is nothing about clustering in the Java EE specifications. Some vendors might implement it, but that’s another “proprietary” story.
In theory no but in practice yes…even Tomcat has clustering :p
Yes, because there are no requirement of “clusters” in JEE, but failover and “load balancing” is inherited by design, due to resource management. Look into how remote EJBs work and their requirements. Look at the Java EE 6 specification section EE.2.9 for further explanation. The EJB spec is also a good place to read.
And this is probably my biggest criticism to JavaEE (although I still use it and still use proprietary clustering solutions). Good point.
We have worked on clustering in Java EE, and I can answer that, natively JVM does not offers special for clustering. But owner solutions can do the trick implementation to address problems related to high disponibilitées and cache management.
I’m not sure some of the above commenters grasp what Antonio is saying, so maybe he’ll permit me trying to paraphrase him:
Clustering is not a part of the Java EE *specification*. Any clustering solution you have used on Glassfish, Weblogic, JBoss, whatever, is vendor-specific and may not be portable. Yes, in practice all of these application servers provide varying levels of support for clustering, but that is not a part of the Java EE specification.