ClusterManager 源码及原理学习

本文深入探讨了Openfire中ClusterManager的源码,阐述了Cluster的整体工作原理。重点分析了xmlPropertySet如何监听clustering.enabled属性变化,当属性值为true时,启动cluster,否则关闭。接着详细讲解了ClusterManager.startup()的执行过程,包括调用CacheFactory.startClustering()启动集群,以及后续的服务器监听和集群事件监听设置,最终实现10秒周期的缓存状态更新。
摘要由CSDN通过智能技术生成

通过对ClusterManager 源码的学习,对其Cluster的 整体思路有了一些认识。


在ClusterManager 中有一段静态代码段,如下:

static {
        // Listen for clustering property changes (e.g. enabled/disabled)
        PropertyEventDispatcher.addListener(new PropertyEventListener() {
			public void propertySet(String property, Map<String, Object> params) { /* ignore */ }
			public void propertyDeleted(String property, Map<String, Object> params) { /* ignore */ }
			public void xmlPropertyDeleted(String property, Map<String, Object> params) { /* ignore */ }
			public void xmlPropertySet(String property, Map<String, Object> params) {
		        if (ClusterManager.CLUSTER_PROPERTY_NAME.equals(property)) {
		            if (Boolean.parseBoolean((String) params.get("value"))) {
		                // Reload/sync all Jive properties
		            	JiveProperties.getInstance().init();
		            	ClusterManager.startup();
		            } else {
		            	ClusterManager.shutdown();
		            }
		        }
			}
        });
其主要功能是 建立一个 属性 监听器,并插入到 PropertyEventDispatcher 中。PropertyEventDispatcher   顾名思义,就是一个属性事件分发器,当openfire系统中的某个属性发生变换后,PropertyEventDispatcher  会通知其保存的各个PropertyEventListener(当然包含此处建立的这个)。

在这里,属性监听器 的主要功能 体现在 xmlPropertySet 函数中,即 监听 clustering.enabled 属性值的变化,如果 为变为true,则重载所有Jive属性值,并调

用 ClusterManager.startup() 来启动cluster。 否则,则关闭cluster,即执行 ClusterManager.shutdown()。


下面来看看ClusterManager.startup() 的代码:

public static synchronized void startup() {
        if (isCl
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值