openfire
yjl49
这个作者很懒,什么都没留下…
展开
-
Openfire 的 Cache机制
Openfire 中多处用到了Cache 来存储那些访问较为频繁的数据,例如userManager中的userCache,rosterManager 中的rosterCache。以下为Openfire中Cache的实现机制:1. Cache 接口:interface Cache extends java.util.Map提供了基本的Cache接口方法。2. Cach原创 2011-10-08 22:31:32 · 4352 阅读 · 1 评论 -
Openfire 用户离线、断线 及心跳检测
客户端登出分为正常离线和断线,正常离线会发送presence 消息通知服务器,断线则无通知发送。 1. 正常离线:客户端在离线之前发送<presence id='***' type ="unavailable"></presence>由PresenceRouter 路由到PresenceUpdateHandler 中处理。判断Type为unavailab...2011-09-29 18:24:00 · 517 阅读 · 0 评论 -
Openfire 离线消息的处理机制
OfflineMessagetrategy:离线消息的处理策略类。1.静态成员变量type 用来设置消息的处理类型,主要包括: 打回 丢弃 存储,在超限情况下打回 存储,在超限情况下丢弃2.静态成员变量quota 标识最大所能存储的message总和大小默认为100k。3.支持OfflineMessageListener事件监听器,只要实现此接口并加入到监听...2011-07-22 19:16:00 · 334 阅读 · 0 评论 -
Openfire 调试信息
如图Openfire一般启动之后如果有收到客户端发送的数据则会在控制台打印出来。根据这些信息我们可以很清晰地了解到服务器的数据交互情况,再结合内部的代码和注释,整个Openfire就比较容易搞懂了。这些信息是由一个叫xmldebugger的插件提供的。RawPrintFilter这个类负责处理指定内容的信息,可通过在数据库表ofproperty中添加plugin.xmld...2011-08-09 11:01:00 · 136 阅读 · 0 评论 -
Openfire Could not locate home
Openfire 开发环境搭建时容易出现Couldnotlocatehome 异常,主要由XMPPServer.java中以下代码引起:private void initialize() FileNotFoundException{ locateOpenfire(); ......}private void locateOpenfire() ...2011-12-13 12:38:00 · 162 阅读 · 0 评论 -
OF 同步异步问题的改进
之前的一篇文章中提到过OF中的同步异步问题,这里针对文章最后描述的两个缺点做些改进。 这里提供一个公共的专门用于处理S2S通信问题的IQ类S2SDataManager。 可以提供多种接口:1.阻塞等待固定时长;2.阻塞等待,并在接收到结果或超时后继续;3.发送后直接返回;4.发送后直接返回,提供回调接口。 public class S2SDataManager impl...2012-01-05 17:18:00 · 87 阅读 · 0 评论 -
Openfire MultiUserChat 多用户聊天 ---创建聊天室
用户发送查询iq消息后,再发送presence消息创建聊天室:<presence id="8Li34-12" to="roomname@conference.myserver/clientA"> <x xmlns="http://jabber.org/protocol/muc"></x></presence>2011-11-08 21:10:00 · 340 阅读 · 0 评论 -
Openfire MultiUserChat 多用户聊天 ---消息发送
创建好了Chat room 后就可以通过邀请或用户主动加入的方式添加成员。过程与创建聊天室的相似,不用点在于聊天室已存在,不需要再重新创建,只需将当前用户加入即可。用户发送聊天消息是直接发送给Chat room 的,再由Chat Room转发给所有用户。详细时序图如下: ...2011-11-10 12:00:00 · 195 阅读 · 0 评论 -
Openfire S2S 监听与消息处理
Openfire中Server to Server 连接默认使用5269 端口,在管理员后台的Server-->Server Settings --> Server to Server 页面有相应的配置项。首先看Service Enable 项: 在用户选择了 Enabled 填写监听端口 提交后在jsp页面里调用的是ConnectionManager相应的方法:Co...2011-12-01 19:18:00 · 142 阅读 · 0 评论 -
Openfire S2S 连接建立与消息发送
发送给其它服务器的消息由@domain 部分区分,在进入到服务器路由后在RoutingTableImpl.routePacket(Packet packet) 中与发送给本地服务器的消息分离。 public void routePacket(JID jid,......){ boolean routed = false; if(serverName.equals(jid....2011-12-02 12:54:00 · 152 阅读 · 0 评论 -
openfire servlet插件
项目中需要 openfire 对外提供一个web接口,接受客户端发送过来的http 请求,按照参数处理后返回相应的response。于是考虑使用servlet插件。 实现方法:1.在src/plugins目录下建立如下结构的目录。 2.在java build path 中source 页添加 myservlet/src/java 目录。 3.在org.jives...2011-09-09 21:56:00 · 153 阅读 · 0 评论 -
Openfire 好友状态的发送(用户登录)
客户端在登录 Openfire 时都会收到自己订阅的好友状态,那么这个好友状态是怎么下发下去的呢? 用户在登录后会发送一个 来更新自己的状态,在PresenceRouter 中进行处理。 这个presence 交由PresenceUpdateHandler 处理,在判断用户为注册用户后使用RosterManager.getRoster() 来获取所有已经订阅的其他原创 2011-10-21 18:01:40 · 3274 阅读 · 0 评论 -
Openfire MultiUserChat 多用户聊天 ---创建聊天室
用户发送查询iq消息后,再发送presence消息创建聊天室: 处理的时序图如下:1. 用户发送的presence 消息被路由到ChatService中处理。2.ChatService中保存有一张本地聊天室中所有用户的视图,如果用户之前已经加入过聊天室,可以从这里快速地查找到相应的信息。 第一次创建聊天室时是不原创 2011-11-08 21:10:01 · 5264 阅读 · 0 评论 -
Openfire MultiUserChat 多用户聊天 ---消息发送
创建好了Chat room 后就可以通过邀请或用户主动加入的方式添加成员。过程与创建聊天室的相似,不用点在于聊天室已存在,不需要再重新创建,只需将当前用户加入即可。用户发送聊天消息是直接发送给Chat room 的,再由Chat Room转发给所有用户。详细时序图如下:原创 2011-11-10 12:00:14 · 2538 阅读 · 0 评论 -
Openfire Monitoring/jinglenodes plugin error
运行Openfire 后出现以下报错:Error loading plugin: C:\Program Files\Openfire\plugins\monitoringjava.lang.NoClassDefFoundError: org/picocontainer/MutablePicoContainer at java.lang.Class.getDeclaredConst原创 2011-12-08 17:07:52 · 2540 阅读 · 0 评论 -
Openfire Could not locate home
Openfire 开发环境搭建时容易出现Could not locate home 异常,主要由XMPPServer.java中以下代码引起:private void initialize() FileNotFoundException{ locateOpenfire(); ......}private void locateOpenfire()原创 2011-12-13 12:38:30 · 4496 阅读 · 1 评论 -
Openfire S2S 连接建立与消息发送
发送给其它服务器的消息由@domain 部分区分,在进入到服务器路由后在RoutingTableImpl.routePacket(Packet packet) 中与发送给本地服务器的消息分离。public void routePacket(JID jid,......){ boolean routed = false; if(serverName.equals(jid.getDom原创 2011-12-02 12:54:22 · 2593 阅读 · 0 评论 -
Openfire S2S 监听与消息处理
Openfire中Server to Server 连接默认使用5269 端口,在管理员后台的Server-->Server Settings --> Server to Server 页面有相应的配置项。首先看Service Enable 项: 在用户选择了 Enabled 填写监听端口 提交后在jsp页面里调用的是ConnectionManager相应的方法:原创 2011-12-01 19:18:58 · 2915 阅读 · 0 评论 -
一个S2S通信中的同步、异步问题的解决
最近在搞Openfire S2S时遇到了一个数据通信时的同步与异步问题。具体描述如下: OF中的基本通信结构如下: 客户端与服务器的通信是同步的,服务器与服务器之间的通信却是异步的:客户端发送一个请求后就会阻塞一段时间,等待服务器的响应;服务器之间则采用消息通知的方式异步交流数据。 所以会出现下面这种情况: 客户原创 2011-12-22 17:57:29 · 1597 阅读 · 0 评论 -
Openfire Monitoring/jinglenodes plugin error
运行Openfire 后出现以下报错: Error loading plugin: C:\Program Files\Openfire\plugins\monitoringjava.lang.NoClassDefFoundError: org/picocontainer/MutablePicoContainer at java.lang.Class.getDeclaredCon...2011-12-08 17:07:00 · 148 阅读 · 0 评论