zoukankan      html  css  js  c++  java
  • openfire源码入门级分析

    Openfire源码分析-----本文来自百度文库

    启动类:ServerStart,main方法调用start方法。

    ·加载类环境

    ·通过反射加载org.jivesoftware.openfire.XMPPServer类,并实例化。

     

    XMPPServer类

    构造方法:单例模式,调用start()方法。

    Start方法:

             ·调用initialize()方法。读取openfire.xml文件,初始化。

             ·实例化XMPPServerInfoImpl对象

             ·根据插件目录,实例化PluginManager对象

             ·当前是否是安装模式,未安装,则需要绑定、测试数据库(verifyDataSource()方法),

    加 载运行环境所需类(loadModules()方法,实例化每个Module类,并放在modules(Map接口中)),初始化每个Module(依次 从modules这个Map中拿出所有的Module实例,分别调用它们的initialize()方法,并将他们的Isinitialized改为 true),启动Module,跟初始化一样,取出每个Module,调用他们的start()方法。

             ·初始化ServerTrafficCounter类。

             ·启动PluginManager的start()方法。(其中运用了多线程方法)

             ·启动所有的XMPPServer事件监听器。

             至此,结束。

     

    ·核心类

    ConnectionManager

    与服务器连接管理接口,实现类ConnectionManagerImpl。

    提供到服务器Socket连接的设置操作方法。

     

    ConnectionManagerImpl是ConnectionManager的实现类,也是继承BasicModule类的,在XMPPServer类的start()方法中的loadModules()方法时加载,startModule()时启动。

     

     

    XMPPServerInfoImpl

    保存XMPP服务器信息的实现类,包括连接,端口等。

     

    DbConnectionManager 

    数据库连接管理类,提供大量的静态方法获取数据库连接。例如:getConnection()等等。

     

    ServerTrafficCounter

    服务器流量计算类,用来计算服务器写入和读取的字节数,包括C-S,S-S或扩展的组件和连接的流量。

     

    XMPPServerListener

    服务器事件监听类,监听服务器的已经启动或即将停止事件,当然也可以通过addServerListener和removeServerListener添加和取消监听事件。

     

    Module

    模型接口,有initialize(),start(),destroy(),getName(),stop()五个方法。

     

     

    BasicModule

    继承Module,方法体基本为空,继承BasicModule后,应对其做方法覆盖。

     

    以下就是openfire启动的时候,要运行的Module。

     

    ·RoutingTableImpl

    RoutTable是用来存储各个终端之间的会话,一旦一个用户经过服务器的认证,他就会发起一次会话,最终会在Rout Table中插入一条记录。不管什么时候,用户变得可用或不可用,表中的数据都会及时更新。

     

    ·AuditManagerImpl

    ·RosterManager

    ·PrivateStorage

    ·PresenceManagerImpl

    ·SessionManager

    ·PacketRouterImpl

    ·IQRouter

    ·MessageRouter

    ·PresenceRouter

    ·MulticastRouter

    ·PacketTransporterImpl

    ·PacketDelivererImpl

    ·TransportHandler

    ·OfflineMessageStrategy

    ·OfflineMessageStore

    ·VCardManager

    ·IQBindHandler

    ·IQSessionEstablishmentHandler

    ·IQAuthHandler

    ·IQPingHandler

    ·IQPrivateHandler

    ·IQRegisterHandler

    ·IQRosterHandler

    ·IQTimeHandler

    ·IQvCardHandler

    ·IQVersionHandler

    ·IQLastActivityHandler

    ·PresenceSubscribeHandler

    ·PresenceUpdateHandler

    ·IQOfflineMessagesHandler

    ·IQPEPHandler

    ·IQPEPOwnerHandler

    ·MulticastDNSService

    ·IQSharedGroupHandler

    ·AdHocCommandHandler

    ·IQPrivacyHandler

    ·DefaultFileTransferManager

    ·FileTransferProxy

    ·MediaProxyService

    ·STUNService

    ·PubSubModule

    ·IQDiscoInfoHandler

    ·IQDiscoItemsHandler

    ·UpdateManager

    ·FlashCrossDomainHandler

    ·InternalComponentManager

    ·MultiUserChatManager

    ·ClearspaceManager

    ·ConnectionManagerImpl

  • 相关阅读:
    [LeetCode] Course Schedule
    [Algorithms] Topological Sort
    [Algorithms] Graph Traversal (BFS and DFS)
    [LeetCode] One Edit Distance
    [LeetCode] Summary Ranges
    [LeetCode] Missing Ranges
    [LeetCode] Fraction to Recurring Decimal
    17.Docker之使用dockerfile创建jdk镜像
    16.Docker之使用dockerfile创建nginx镜像
    7.Docker之dockerfile指令简介
  • 原文地址:https://www.cnblogs.com/avenxia/p/2279519.html
Copyright © 2011-2022 走看看