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