• 1. Openfire简介
  • 2. 1、为什么选择Openfire?完全开源,GPL协议; 完全JAVA语言实现,不依赖任何系统平台; 基于成熟的XMPP协议; 基于可扩展的WEB控制管理界面; 基于插件的开发框架,高可扩展性; 稳定,支持上万并发用户。
  • 3. 2、Openfire框架——模块图
  • 4. 2、Openfire框架——总体结构Openfire ServerPluginsCoreOpenfire Enterprise EditionMonitoring ServiceBroadcastOther PluginsRouterXMPPMUCPresensePubsubOtherDBClientsXMPPCocallProductCommericalOpen Source
  • 5. 2、Openfire框架——基于服务总线XMPP总线Audit Manager……ModulesSession ManagerPrivate StorageMessage RouterConnection ManagerIQAuth Handler 基于总线的设计方式。各个Module都是单例,使用者通过总线获得Module相关实例。所有的Module大致分为以下几类: 提供服务功能; 提供处理功能; 提供配置功能; 提供监听功能; 提供网络功能。
  • 6. 2、Openfire框架——统一管理插件PluginManagerMonitorBroadcastCustomPresenceFilterUserImportExport 所有的插件由插件管理器统一管理,它提供: 启动和停止插件的功能; 安装和卸载插件; 注册监听功能; 提供监听功能; 提供插件相关信息接口。
  • 7. (本页无文本内容)
  • 8. 3、Openfire通信——mina简介Openfire的通信处理基于Apache MINA框架实现——MINA是一个网络应用程序框架,用来帮助用户简单地开发高性能和高可靠性的网络应用程序。它提供了一个通过Java NIO在不同的传输例如TCP/IP和UDP/IP上抽象的事件驱动的异步API。对通信功能进行扩展。 特性: 为不同的传输类型(TCP/UDP)提供了统一的API; 过滤器作为一个扩展特性,类似Servlet过滤器; 低级(字节缓存)和高级(用户定义的消息对象和编码)的API; 高度定制化线程模型(单线程/线程池)。 超载保护和传输流量控制
  • 9. ——MINA流程3、Openfire通信
  • 10. 4、Openfire内部处理自定义IQ处理器:处理自定义IQ包 自定义组件:自定义一个组件,名为broadcast ,那么发送给子域broadcast.thunisoft.com的消息,全部会路由到该组件。 拦截器,全局拦截所有流经Openfire的Packet包。用户拦截器拦截所有和该用户有关的Packet包。 是Openfire扩展的主要三种方式
  • 11. 4、Openfire内部处理——Packet处理流程图自定义IQ Handler处理器如果已经注册,可以在此查找到。
  • 12. 4、Openfire内部处理MINA框架自己实现并注册——Packet处理相关类图
  • 13. 4、Openfire内部处理——组件分发流程图自定义组件如果在此注册,可以查询到
  • 14. 4、Openfire内部处理——组件分发类图由路由表查询得到自定义组件
  • 15. 4、Openfire内部处理——Packet拦截拦截管理器维护两个列表,一个是全局拦截器列表,另一个是用户拦截器列表 全局拦截所有流经Openfire的Packet包。 用户拦截器拦截所有和该用户有关的Packet包。 在所有送入和送出的包做处理前后,拦截管理器都会拦截包做相关处理
  • 16. 4、Openfire内部处理——Packet拦截程图注册自定义拦截器到拦截管理器
  • 17. 5、Openfire页面装饰 Openfire使用Jetty提供web功能,用户通过访问web页面而改变运行中的Openfire的属性。 Openfire使用了sitemesh 。SiteMesh是一个用来在JSP中实现页面布局和装饰(layout and decoration)的框架组件。当我们访问Plain Page,Web.xml里面配置的Sitemesh过滤器会自动给Plain Page装饰。这些装饰一般都是菜单,通过定义模板+配置文件可以实现。为插件实现页面提供了可能。