由于转做iOS开发,openfire长时间未接触了。本文提到的东西只是我当时的记录,可能存在遗漏的地方,鉴于有网友评论说没法成功,我也没有时间去验证这个东西,
所以此文作废。请慎重考虑再决定是否继续阅读本文。
项目需要做openfire的集群来提高负载均衡,openfire是个很好的东西,有现成的clustering plugin,以前貌似只有enterprise版可以用,现在放开限制了。别太高兴,clustering plugin依赖于Oracle Coherence, 这是个收钱的东西。
环境:
一台虚拟机, xp
openfire 3.7.1,这里下载
步骤:
- 按照 我的另外一篇文章来安装openfire.
- 安装好以后登录openfire管理界面,点击plugins->Available Plugins,然后安装Clustering Plugin.
- 安装好以后点击Server->Server Manager->Clustering,看到下面错误。
java.lang.NoClassDefFoundError: com/tangosol/net/Invocable at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Unknown Source) at org.jivesoftware.util.cache.CacheFactory.getMaxClusterNodes(CacheFactory.java:480) at org.jivesoftware.util.cache.CacheFactory.isClusteringAvailable(CacheFactory.java:400) at org.jivesoftware.openfire.cluster.ClusterManager.isClusteringAvailable(ClusterManager.java:344) at org.jivesoftware.openfire.admin.system_002dclustering_jsp._jspService(system_002dclustering_jsp.java:115) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:530) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1216) at com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.java:118) at com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:52) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1187) at org.jivesoftware.util.LocaleFilter.doFilter(LocaleFilter.java:74) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1187) ... 41 more
针对上面的问题,这里有解决方案 。根据它的解释,这是一个Oracle Coherence 库缺失的问题。Oracle Coherence是一个 in memory distributed data grid solution for clustered applications and application servers. 它自身具有防止单点失败的功能。扯远了。 解决这个问题需要下载Oracle Coherence库,需要Oracle的Single Sign On账号登陆。Oracle SSO用起来难受。我下了一个Oracle Coherence共享在这里 . Coherence最新版3.7不能用,我用的是3.4.
注意,Oracle Coherence是收费的. 免费下载的版本仅限用于开发和演示。
-
按照上面的链接把Coherence库部署好应该就可以正常启动Clustering插件了。
-
接下来你就可以进入管理界面然后点击server->Server Manager->clustering->Clustering Enabled, 然后点击Enabled. 这个过程非常慢.