- 浏览: 83700 次
文章分类
- 全部博客 (136)
- 我的技术资料收集 (98)
- 具体技术 (1)
- 的技术资料收集 (4)
- All Articles (1)
- 机器学习 Machine Learning (1)
- 网络编程 (1)
- java (2)
- ava (1)
- 零散技术 (1)
- C# (3)
- 技术资料收集 (1)
- CQRS (1)
- 数据库技术(MS SQL) (1)
- .Net微观世界 (1)
- Oracle SQL学习之路 (1)
- C/C++ (1)
- JS/JQ (1)
- Js封装的插件/实例/方法 (2)
- 敏捷个人 (2)
- Javascript (1)
- 程序设计---设计模式 (1)
- Bug (1)
- 未知分类 (1)
- 程序设计 (1)
- Sharepoint (1)
- Computer Graphic (1)
- IT产品 (1)
- [06]JS/jQuery (1)
- [07]Web开发 (1)
- .NET Solution (1)
- Android (3)
- 机器学习 (1)
- 系统框架设计 (1)
- Others (1)
- 算法 (1)
- 基于Oracle Logminer数据同步 (1)
- 网页设计 (1)
- 原创翻译 (1)
- EXTJS (1)
- Jqgrid (1)
- 云计算 (1)
最新评论
原帖地址:http://www.cnblogs.com/jizha/archive/2013/06/07/openfire_vcard.html
VCardProvider:
所有提供vcard服务的程序需要实现的接口,包括如下功能:
- loadVCard:通过用户名加载vcard
- createVCard:新建vcard
- updateVCard:更新已有vcard
- deleteVCard:删除vcard
- isReadOnly:vcardProvider是否为只读(不允许写入和更新)
DefaultVCardProvider implements VCardProvider:
1、提供对VCardProvider接口的默认实现,从本地数据表ofvcard中读写数据。当然也可以有其他实现,如从ldap数据源获取vcard信息,只需要实现该VCardProvider接口即可。
2、因为是本地数据库,所有isReadOnly方法返回false,代表可读可写。
3、在表ofproperty表中,有如下的一条记录:
provider.vcard.className org.jivesoftware.openfire.vcard.DefaultVCardProvider
代表openfire目前在用的VCardProvider是DefaultVCardProvider,如果自己实现的其他的vcard源,可以自己实现一个VCardProvider来替换掉,只需要更改掉该条记录即可。
VCardManager extends BasicModule:
1、实现对用户vcard信息的管理,功能有提供基本的vcard增删改查操作、vcard缓存操作、vcard事件管理操作等
2、在该模块进行实例化时(系统启动时),在构造函数中使用CacheFactory.createCache(cacheName)方法创建了vcard缓存,并且订阅了vcard的事件(创建、更新、删除),在事件处理中更新vcard缓存
3、在加载vcard信息的时候,先查询缓存中是否含有该用户的vcard信息,没有的话再查询数据库。并把查询的结果更新到缓存中。
4、调用VCardProvider的相关方法进行vcard的查询和设置vcard信息,并在完成后,使用下面的方法更新缓存和激发事件。
更新缓存:
vcardCache.put(username, newvCard);
分发事件:
// Dispatch vCard events
if (created) {
// Alert listeners that a new vCard has been created
VCardEventDispatcher.dispatchVCardCreated(username, newvCard);
} else if (updated) {
// Alert listeners that a vCard has been updated
VCardEventDispatcher.dispatchVCardUpdated(username, newvCard);
}
// Alert listeners that a new vCard has been created
VCardEventDispatcher.dispatchVCardCreated(username, newvCard);
} else if (updated) {
// Alert listeners that a vCard has been updated
VCardEventDispatcher.dispatchVCardUpdated(username, newvCard);
}
5、由于继承了BasicModule类,有如下的处理:
1)实现了initialize方法,通过下面的方法找到配置的相应的provider方法,如果没有,返回默认的provier
String className = JiveGlobals.getProperty("provider.vcard.className",
DefaultVCardProvider.class.getName());
DefaultVCardProvider.class.getName());
2)实现了start方法,在该方法中订阅用户事件
UserEventDispatcher.addListener(eventHandler);
在该事件的处理方法中,如果发现用户被删除,则调用方法删除该用户的缓存及vcard。
org.jivesoftware.openfire.handler.IQvCardHandler
1、用于接受客户端发来的vcard相关请求(获取vcard和设置vcard)
2、handleIQ()方法调用VCardManager的setVCard和getVCard方法来操作vcard信息。
3、在iq=get的时候,判断发来的请求是否需要过滤掉部分vcard字段,不是全部返回给客户端。
发表评论
-
C#WebBrowser控件使用教程与技巧收集--苏飞收集 - sufeinet
2013-06-28 12:07 1067原帖地址:http://www.cnblogs.com/suf ... -
我要喷一个自认为很垃圾的网站架构 - 老赵【苏州】
2013-06-28 12:01 1126原帖地址:http://www.cnblogs.com/lao ... -
[翻译] Oracle Database 12c 新特性Multitenant - Cheney Shue
2013-06-28 11:43 620原帖地址:http://www.cnblogs.com/ese ... -
memcahd 命令操作详解 - 阿正-WEB
2013-06-28 11:37 469原帖地址:http://www.cnblogs.com/azh ... -
面向过程的代码符合大众的思维方式吗? - 史蒂芬.王
2013-06-27 10:28 593原帖地址:http://www.cnblogs.com/ste ... -
面向过程的代码符合大众的思维方式吗? - 史蒂芬.王
2013-06-27 10:28 558原帖地址:http://www.cnblogs.com/ste ... -
RPG游戏之组队测试 - zthua
2013-06-27 10:22 557原帖地址:http://www.cnblogs.com/zth ... -
IT人们给个建议 - SOUTHER
2013-06-26 14:06 523原帖地址:http://www.cnblogs.com/sou ... -
Java向前引用容易出错的地方 - 银河使者
2013-06-26 14:00 492原帖地址:http://www.cnblogs.com/nok ... -
使用Func<T1, T2, TResult> 委托返回匿名对象 - 灰身
2013-06-26 13:54 800原帖地址:http://www.cnblo ... -
【web前端面试题整理03】来看一点CSS相关的吧 - 叶小钗
2013-06-25 10:45 783原帖地址:http://www.cnblogs.com/yex ... -
Windows 8 动手实验系列教程 实验6:设置和首选项 - zigzagPath
2013-06-25 10:27 618原帖地址:http://www.cnblogs.com/zig ... -
闲聊可穿戴设备 - shawn.xie
2013-06-25 10:21 562原帖地址:http://www.cnblo ... -
CentOS下Mysql安装教程 - 小学徒V
2013-06-23 15:24 608原帖地址:http://www.cnblogs.com/xia ... -
vmware安装ubuntu12.04嵌套安装xen server(实现嵌套虚拟化) - skyme
2013-06-23 15:18 836原帖地址:http://www.cnblogs.com/sky ... -
之前专门为IE6、7开发的网站如何迁移到IE10及可能遇到的问题和相应解决方案汇总 - 海之澜
2013-06-23 15:12 949原帖地址:http://www.cnblogs.com/wuz ... -
Android学习笔记--解析XML之SAX - 承香墨影
2013-06-23 15:01 407原帖地址:http://www.cnblo ... -
SQL Server 性能优化之——T-SQL TVF和标量函数
2013-06-19 09:32 670原帖地址:http://www.cnblogs.com/Boy ... -
Nginx学习笔记(二) Nginx--connection&request
2013-06-19 09:26 665原帖地址:http://www.cnblogs.com/cod ... -
从郭美美霸气侧漏看项目管理之项目经理防身术
2013-06-19 09:20 499原帖地址:http://www.cnblogs.com/had ...
相关推荐
在"即时通信openfire功能代码"这个压缩包中,可能包含了实现Openfire各种功能的源代码示例和说明文档。这些代码可能涵盖了用户注册、登录、发送消息、管理聊天室、实现状态更新等功能的实现方法。通过学习和理解这些...
#### 一、Openfire源代码目录结构分析 ##### 1. build目录 - **概述**:此目录包含了构建Openfire安装文件所需的资源与配置,例如生成RPM包或其他类型的安装程序时所必需的脚本与文件。 - **内容**:包含JRE(Java...
### Openfire 源代码在 Eclipse 3.5.2 中的部署、编译、运行与安装 #### 一、准备工作 在开始之前,需要确保已经下载了 Openfire(版本 3.6.4)、Spark(版本 2.5.8)以及 Smack(版本 3.1.0)。由于 Spark 的源码...
《Openfire源代码在Eclipse3.5.2中的部署、编译与运行》 Openfire是一款基于Java的开源即时通讯服务器,它提供了强大的聊天、会议和协作功能。本教程将指导你如何在Eclipse 3.5.2环境下部署、编译、运行并配置...
这个"openfire相关代码"的压缩包文件可能包含了用于连接、登录和发送消息到Openfire服务器的示例代码。对于初学者,理解并应用这些代码可能会有些挑战,因为它们可能针对特定的场景或者具有一定的复杂性。 在Java中...
下载Openfire 3.7.0安装文件openfire_3_7_0.exe和源代码openfire_src_3_7_0.zip,解压缩源代码文件夹,包括build、resources、documentation和src四个目录。 * build目录:用于生成安装文件,例如rpm文件 * ...
网上的openfire源码分析,整理成了本地文件,方便查看。作者的博客在此:https://www.cnblogs.com/Fordestiny/p/7462745.html
同时,源码分析和理解将有助于进一步定制和扩展应用功能,例如添加新的消息类型、实现推送通知、优化性能等。通过这个项目,开发者可以学习到如何集成即时通讯系统到Android应用,以及如何使用Java和Android SDK处理...
标题“使用openfire登录android”涉及的技术点主要是集成Openfire服务器和MySQL数据库,以及在Android平台上实现登录功能。Openfire是一款开源的即时通讯(Instant Messaging, IM)服务器,它基于XMPP(Extensible ...
【标题】:“基于openfire的安卓聊天软件” 在IT领域,构建实时通信应用是一个常见的需求,尤其是对于移动设备用户。本项目聚焦于基于Openfire的Android聊天软件开发,旨在为用户提供一个可以注册、登录、聊天、...
2. **源码下载**: 访问官方网站 [http://www.igniterealtime.org/projects/openfire/](http://www.igniterealtime.org/projects/openfire/) 下载最新版本的Openfire源代码,文档中提到的是3.6.4版本。 #### 三、...
标题中提到的“Openfire消息机制和源码分析”指的是对开源即时通讯服务器Openfire内部消息处理机制的详细探讨和源代码的解读。Openfire是一个基于XMPP(Extensible Messaging and Presence Protocol)协议的服务器端...
Openfire是一款基于XMPP协议的服务器软件,它提供了高效、安全的实时通讯服务,支持多种平台,包括Android。 在Android平台上开发基于XMPP的Openfire客户端,主要涉及以下几个核心知识点: 1. **XMPP协议理解**:...
开发者可以通过这个源代码学习如何配置 Openfire 服务器,设置 WebSocket 连接,以及如何在客户端应用中使用 Smack API 进行即时通讯功能的开发。此外,源代码还可能包含了错误处理、安全配置、性能优化等方面的实践...
- **SVN(Subversion)**:一种版本控制系统,用于管理Openfire项目的源代码版本。 #### 二、Openfire源代码获取与项目初始化 - **源代码位置**:通过提供的SVN地址(`...
Openfire是一个强大而灵活的即时通讯平台,通过上述资源,你可以学习到如何从零开始搭建Openfire服务器,配置源代码进行二次开发,以及如何解决遇到的报错。对于希望在企业中构建安全、高效沟通系统的开发者来说,...
### Openfire二次开发问题分析及解决 #### 一、引言 随着计算机技术的迅猛发展,开源软件的二次开发利用逐渐成为进行快速开发的主要手段。Openfire作为一款优秀的开源XMPP服务器软件,因其卓越的性能和良好的可...
本文将详细介绍如何在Eclipse开发环境中部署Openfire源代码。Openfire是一款基于XMPP协议的即时消息服务器,由Ignite Realtime组织开发并维护。由于其开源、灵活且支持多种设备的特点,在企业级即时通信系统中有广泛...
而"Openfire-4.8.0"目录则包含所有源代码文件,开发者可以深入研究其内部工作原理,进行二次开发或定制化修改。 对于计算机科学的学习者,尤其是那些进行毕业设计或论文研究的人,Openfire源码提供了一个了解即时...