openfire 源码分析
- 编译目录
-
source folder:包括openfire和各插件的代码
-
libraries:build/lib下jar包和插件下jar包,jdk/lib/tools.jar(编译jsp需要)
-
- 编译(ant)
- 编译文件目录:build/build.xml
-
plugins:构建所有的插件
- 启动服务器:org.jivesoftware.openfire.starter.ServerStarter
- classpath: src/i18n:国际化文本。 src/resources/jar:MIME类型和Console配置文件
-
ServerStarter:更新ClassLoader,将lib加进来,实例化唯一的XMPPServer
-
XMPPServer:
初始化:定openfirehome目录,JiveGlobals类读取openfire.xml文件,JIveProperties读取数据表ofProperty中的配置参数,PluginManager初始化所有插件
- 运行
-
RoutingTableImpl:消息路由,所有的消息都要经过它来发送
-
RosterManager:好友资料管理类
-
PresenceManagerImpl、PresenceUpdateHandler:所有用户状态的管理类
-
SessionManager:所有会话的管理类
-
PacketRouterImpl:消息路由,所有消息都要经过它来获取
-
MulticastRouter:广播路由,专门负责路由广播类消息
-
OfflineMessageStrategy:离线消息策略类,就是使用哪种方式来保存离线的消息
-
OfflineMessageStore:负责离线消息的存储
-
IQHandler:专门处理IQ类消息
-
IQBindHandler:负责处理客户端的资源的绑定
-
IQAuthHandler:负责登录请求
-
IQPingHandler:负责客户端ping处理
-
DefaultFileTransferManager:负责文件传送的类
-
MultiUserChatManager:负责群聊的类
-
ConnectionManagerImpl:负责连接的类
- MessageRouter:负责message消息类型的处理类
-
UserManager:负责用户的管理类
- JDBCAuthProvider:负责登录校验的类
- DefaultUserProvider:默认用户的数据库操作类
- JDBCUserProvider:JDBC连接类型的用户数据操作类
-
具体的消息处理流程,可以查看我的一篇博客:http://www.cua0702.com/?p=134
声明:本文由 admin 原创编译,转载请注明出自:http://www.cua0702.com/?p=146

浙公网安备 33010602011771号