在openfire中很多地方用到了类似如下的代码:
PropertyEventListener propListener = new PropertyEventListener() {
public void propertySet(String property, Map params) {
}
public void propertyDeleted(String property, Map params) {
}
public void xmlPropertySet(String property, Map params) {
}
public void xmlPropertyDeleted(String property, Map params) {
}
};
PropertyEventDispatcher.addListener(propListener);
其工作原理是怎么回事的呢?
先来看看PropertyEventDispatcher这个类,其类中有一个集合
private static Set<PropertyEventListener> listeners =
new CopyOnWriteArraySet<PropertyEventListener>();
用来存储PropertyEventListener,并提供增加和删除监听器的方法。
其事件类型有4种:
property_set,
property_deleted,
xml_property_set,
xml_property_deleted;
对于Property属性,很多操作是用JiveGlobals的相关方法,在另外的以篇文章中介绍了JiveGlobals有2种类型的属性管理,一种是基于XML本地文件的XMLProperties,一种是基于数据库ofproperty的数据库属性管理。
当调用JiveGlobals的put方法的时候,如:
public String put(String key, String value){
--前面的省略....
PropertyEventDispatcher.dispatchEvent(key, PropertyEventDispatcher.EventType.property_set, params); --此为触发对应的事件监听器。
}
其他的方法也是这个样。
此篇文章就到此,稍后会有更多关于openfire的个人解读。
联系方式(qq):851392159
相关推荐
日志信息应包含关键事件(如消息发送、接收、错误等)、时间戳和详细上下文。同时,日志管理应具备级别控制,如调试、信息、警告和错误,以便在不影响系统性能的前提下,提供足够的调试信息。 总的来说,这个升级版...
下载Openfire 3.7.0安装文件openfire_3_7_0.exe和源代码openfire_src_3_7_0.zip,解压缩源代码文件夹,包括build、resources、documentation和src四个目录。 * build目录:用于生成安装文件,例如rpm文件 * ...
先说一下为什么要写这篇博客,是因为本人在周末在研究XMPP和OpenFire,从网上下载了个Demo,但跑不起来,花了很长时间,经改造后,跑起来了,写个篇博文也是希望后边学习XMPP和OpenFire的同学下载后直接运行,少走...
openfire服务端自带jre
6. Openfire中的类命名规则通常包括Starter、Plugin、Listener、Dispatcher、Handler、Manager、Provider等后缀,这些命名有助于快速识别和理解类的职责和功能。 通过这些知识点的梳理,可以更深入地理解Openfire的...
《OpenFire深入浅出》这本书是关于开源即时通讯服务器OpenFire的权威指南,它涵盖了OpenFire的各个方面,从基础安装到高级配置,旨在帮助读者全面理解并熟练掌握OpenFire的使用和管理。OpenFire是一款基于Java开发的...
为了在Linux系统上成功安装并配置Openfire,我们需要遵循一系列步骤,涉及的主要组件包括JDK(Java Development Kit)和MySQL数据库。 首先,我们需要确保系统已经安装了Java运行环境。JDK是开发和运行Java应用程序...
理解XMPP的基本概念和工作原理,有助于更好地使用和定制Openfire。 总结: Openfire是一个强大而灵活的即时通讯平台,通过上述资源,你可以学习到如何从零开始搭建Openfire服务器,配置源代码进行二次开发,以及...
- 在“Arguments”选项卡中的“VM arguments”中设置系统属性`-DopenfireHome="${workspace_loc:openfire}/target/openfire"`,该属性指定了Openfire的安装路径。 - 在“Classpath”选项卡中添加必要的文件夹到...
Openfire 安装配置和插件开发详解 Openfire 是一个基于 XMPP 协议的即时通信服务器,可以实现实时的聊天服务。在本文中,我们将详细介绍 Openfire 的安装和配置过程,并探讨如何使用 Eclipse 进行插件开发。 一、...
Openfire服务器是一款基于Java开发的即时通讯(IM)服务器,它使用XMPP协议提供服务,广泛应用于企业级的内部通信和协作系统。Openfire的可扩展性非常强,支持通过插件来添加额外的功能,例如搜索插件就是其中之一,...
Openfire的部署相对简单,只需解压"openfire_4_1_6.zip"压缩包,根据提供的安装指南进行安装和配置。安装完成后,通过Web管理界面进行服务器和用户的管理。 总结,Openfire 4.1.6作为一款基于XMPP协议的即时通讯...
- **事件监听器**:用于监听Openfire中的特定事件,如用户登录、消息发送等。 - **数据包拦截器**:可以在数据包发送或接收时对其进行修改或拦截。 - **服务**:提供自定义的XMPP服务,如自定义的命令行接口或新的...
6. **资源文件(Resource Files)**:包括语言文件(用于多语言支持)、图标和其他静态资源,这些文件可以增强插件的用户体验。 7. **测试代码(Test Cases)**:为了确保插件的功能正确无误,开发者通常会编写单元...
- 项目的Android部分是实现用户界面和与Openfire服务器交互的关键。开发者可能使用了Android Studio进行开发,采用Java或Kotlin语言,使用Android SDK提供的API来处理UI、网络请求、数据存储等任务。 - 客户端需要...
Openfire是一款开源、基于Java的即时通讯(IM)服务器,广泛应用于企业级的消息推送和协作通信。在Windows环境下部署Openfire,可以实现高效、安全的实时通信功能,例如聊天、群组讨论、文件传输等。下面我们将深入...
4. **Android编程**:在Android环境下进行网络通信,处理异步任务,使用Service和BroadcastReceiver来保持连接和监听事件。 5. **数据持久化**:保存用户会话状态和消息历史,可能需要使用SQLite数据库或...
1. **扩展性**:XMPP的“extensible”特性意味着它可以轻松地添加新功能,通过定义新的XML元素和属性来扩展协议。 2. **分布式**:XMPP支持多服务器架构,使得用户可以在不同服务器之间自由漫游,且能实现大规模的...
在本文中,我们将讨论基于 Openfire 和 Spark 的 XMPP IM 软件开发。我们将从 XMPP 协议的介绍开始,接着讨论如何使用 Spark 和 Openfire 来实现一个完整的 IM 软件开发。 什么是 XMPP? XMPP(Extensible ...