Openfire 源码分析 1
Openfire Openfire 是开源的实时协作服务器(RTC),它是基于公开协议XMPP(也成为Jabber)消息的
Openfire 的核心功能可以概括为:连接管理、消息解析、消息路由、消息发送
1 框架 Openfire 核心功能由 Module 组成,上图中的各个模块绝大多数也是基于Module 实现的
为了动态的管理这些 Module,Openfire 使用了自己的类加载器JiveClassLoader,这样就可以在不重新启动系统的前提下进行 Module 的安装、卸载和重新加载
2 Modu le Openfire 在启动时就加载了所有的Module,这些 Module 提供了 Openfire 的核心功能
所有 Module 都需要实现 Module 接口,该接口中定义了模块生命周期中需要调用的方法,如下图所示: 1
3 数据流 2
Openfire 与MIMA MINA 是Apache 组织下的一个项目,它可以帮助用户轻松的开发高性能和高扩展性的网络应用
MINA 提供了一个抽象的、支持各种传输协议的(如 TCP/IP、UDP/IP)、基于 Java NIO 的异步事件驱动的API
Openfire 的ConnectionHandler 类继承了MINA 的IoHandlerAdaper,他主要负责连接的创建、销毁,以及接收到 XML 数据包的投递
ConnectionHandler 有三个子类,其中ClientConnectionHandler 负责客户端与服务器端的连接,ComponentConnectionHandler 负责组件与服务器端的连接
Mu lti-User-Chat 多人聊天的消息是绑定在子域 conference 上的,对应的Component 是MultiUserChat