In our production environment, we're using JBoss Enterprise Web Server 2.0, which basically is a bundling of Apache HTTP Server and a slightly modified Tomcat 7. We have two nodes, on different servers, and we're trying to set up clustering with session failover (replication) between the nodes. My initial thought was to simply follow the Tomcat 7 Clustering How-To. But following the mentioned guide (using the config in the example) and starting the server gives this error:
java.lang.ClassNotFounException: org.apache.catalina.ha.tcp.SimpleTcpCluster
Also in the log:
INFO: Cluster RuleSet not found due to [java.lang.ClassNotFoundException: org.apache.catalina.ha.ClusterRuleSet]. Cluster configuration disabled.
So it appears that the Tomcat 7 version shipping with JBoss EWS doesn't ship with the standard Tomcat 7 clustering libraries. Instead, there seems to be a lot of mod_cluster-*.jar
files in the lib
folder of the Tomcat installation.
All the documentation I've found on this topic is how to configure clustering at the Apache HTTP Server level. But we're not really using Apache HTTP in front, so it's not applicable. Now I'm wondering if I should just add the clustering libraries from a standard Tomcat 7 installation, or if there is another "standard" way of configuring clustering with JBoss EWS? Has anyone set up clustering with JBoss EWS? Any insights are welcome.
Edit:
I found this note in the document JBoss Enterprise Web Server Component Details
Apache Tomcat 7 - Clustering has been removed - Red Hat® does not believe this feature is suitable for medium or large-scale production deployments.
So that explains why the Tomcat clustering libraries are not available.
Edit:
More information, found in the Release notes for JBoss EWS 2.0.0
Tomcat Clustering has been excluded from the Apache Tomcat 6 and 7 component. Specifically the catalina-tribes.jar and catalina-ha.jar files have been removed. This eliminates the possibility of session replication.
That last sentence is particularly disturbing...
According to an official response from RedHat, session replication is not supported with JBoss EWS. I guess session replication is not an "enterprise" feature according to RedHat... If we want session replication in a supported manner, we need to upgrade to JBoss EAS.
Of course, this does not mean that it is not possible to do session replication with JBoss EWS. It just won't be supported. So it's possible to copy the catalina clustering libraries into JBoss EWS and set up clustering and replication the way it's described in Tomcat 7's clustering how-to. Or use other session replication frameworks, as @Jukka suggested.