Clients Can't Connect to Cluster

It seems that the clustering issue hasn’t been raised in awhile and for the life of me I can’t figure out a solution to my problem here. I’ve got two VMware servers, each running Win2003 R2 SP2, with Openfire 3.6.4. I’ve installed the modified Coherence 3.5.3 (with modified coherence.jar) and installed the plugins. But I’m getting really weird results with the servers.

If I run both servers with clustering DISABLED, then I can connect to either or seperately. Sessions tab is working and all.

If I run one server with clustering ENABLED and the other DISABLED, then I can connect to either or seperately. Sessions tab is working and all. The clustering section on the ENABLED server will display a load if it has one.

If I run both servers with clustering ENABLED, all hell breaks loose. Suddenly, I can’t connect to either server, seperately or corporately (using DNS round robin). Clients hang on connection, and the server it’s trying to connect to will display the load of trying-to-connect clients in the clustering section. And the session tab renders this error:

Exception:

java.lang.NullPointerException
     at org.jivesoftware.openfire.admin.session_002dsummary_jsp._jspService(session_002dsummary_jsp.java:377)
     at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
     at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
     at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1093)
     at com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.java:118)
     at com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:52)
     at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
     at org.jivesoftware.util.LocaleFilter.doFilter(LocaleFilter.java:66)
     at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
     at org.jivesoftware.util.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:42)
     at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
     at org.jivesoftware.admin.PluginFilter.doFilter(PluginFilter.java:70)
     at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
     at org.jivesoftware.admin.AuthCheckFilter.doFilter(AuthCheckFilter.java:146)
     at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
     at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
     at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
     at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
     at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:726)
     at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
     at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:206)
     at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
     at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
     at org.mortbay.jetty.Server.handle(Server.java:324)
     at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
     at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:829)
     at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514)
     at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
     at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
     at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
     at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)

If I turn off a server, or disable clustering, things start working again. Anybody have any ideas?

BUMP

No ideas? Anyone?

I wasn’t able to make it run properly with coherence 3.5.x, and, in the end, went with the 3.3.1 version.

Pankaj Mokati said in http://www.igniterealtime.org/community/blogs/ignite/2009/11/10/clustering-plugi n-for-openfire-is-now-open-source#comment-5830

“The current Plugin version is not compatible with Coherence 353 because com.tangosol.net.cache.CachingMap class no longer implements com.tangosol.net.cache.CacheStatistics interface. Due to this it throws nosuchmethodexception for getcacheHits() method defined in CacheStatistics interfaces. This method is invoked from com.jivesoftware.util.cache.ClusteredCache.getCacheHits(ClusteredCache.java:193 )”

So my guess is that playing a bit with com.jivesoftware.util.cache will allow you to get it working using the methods implemented in Coherence 3.5.x.

Where did you find coherence 3.3.1?

In the korean web of Oracle. They already removed it, though.

So basically, without editing the 3.5.x coherence files, you can’t get Openfire Clustering to work currently?

I think the wisest thing would be to modify the server source to use the 3.5 methods and fuctions, but I’m not a programmer, so I’m not sure of how to do the modifications.

After getting a hold on Coherence 3.3.1 this worked. Still had to modify coherence.jar. If anybody is wondering about this, you absolutely need coherence 3.3.1

I am also facing the problem of getting the Coherence 3.3.1. Could you please send the jar to me so that I can test.