Spark/Smack/Spark/Smack/OpenfireOpenfireOverviewOverview简介简介简介简介简介简介简介简介••SparkSpark是一个开源,跨平台是一个开源,跨平台IMIM--XMPPXMPP协议客协议客户端。它的特性支持集组聊天,电话集成户端。它的特性支持集组聊天,电话集成和强大安全性能。和强大安全性能。Openfire+SparkOpenfire+Spark是是JiveJiveSoftwareSoftware官方推荐的最佳的组合。官方推荐的最佳的组合。••基于基于jre6jre6,swing(,swing(部分使用部分使用swingxswingx))程序启动过程程序启动过程程序启动过程程序启动过程程序启动过程程序启动过程程序启动过程程序启动过程--launchlaunchStartup.startunpackArchivesUnpackthepluginandlibrary(allendwith“.pack”)inthePluginsandlibdirectoryCreateainstanceofsparkandinvokeitsstartupmethodget“User.home”fromtheSystempropertyastheruntimedirectoryLoad“Spark.properties”astheusersettingsLocale,autologin,etc.addtheresourcedirectorytoproperty“java.library.path”Createanewsparkinstance??启动启动启动启动启动启动启动启动--loginlogin启动启动启动启动启动启动启动启动--buildworkspacebuildworkspace启动启动启动启动启动启动启动启动--contactlistcontactlist----pluginpluginbuildContactListshowEmptyGroupsshowOfflineUsersSparkManager.getWorkspace().loadPlugins()Loadbaseplugin(gatewayPlugin)(transcriptPlugin)(broadcastPlugin)(bookmarkPlugin)TheyareinclasspathInvokeinWorkspaceloadInternalPluginsLoadtheMETA-INF/plugins.xmlintheclasspathloadPublicPluginsLoadfrom${sparkfolder}/PluginsLoadeachplugin.xmlInvokeinPluginManagerLoadpluginbygettheparameter:System.getProperty(plugin)addSubscriptionListenerHerewilladdthePresencelistenerAddpresenceandmessagelisteners,listenforthesetoforceopena1-1peerchatwindowfromotheroperatorsifOneisn'talreadyopenSparkManager.getSessionManager().getConnection().addPacketListener(this,workspaceMessageFilter);PluginPlugin••工程结构:工程结构:PluginPlugin安装安装安装安装安装安装安装安装classplugin玦nterface,Plugin+canShutDown():boolean+initialize():void+shutdown():void+uninstall():voidUIUI结构结构结构结构结构结构结构结构ChatAreaManagerManager••SparkManagerSparkManager––获得其它获得其它managermanagerclasssparkEA7.5UnregisteredTrialVersionEA7.5UnregisteredTrialVersionEA7.5UnregisteredTrialVersionEA7.5UnregisteredTrialVersionEA7.5UnregisteredTrialVersionEA7.5UnregisteredTrialVersionEA7.5UnregisteredTrialVersionEA7.5UnregisteredTrialVersionEA7.5UnregisteredTrialVersionEA7.5UnregisteredTrialVersionEA7.5UnregisteredTrialVersionEA7.5UnregisteredTrialVersionEA7.5UnregisteredTrialVersionEA7.5UnregisteredTrialVersionEA7.5UnregisteredTrialVersionEA7.5UnregisteredTrialVersionEA7.5UnregisteredTrialVersionEA7.5UnregisteredTrialVersionEA7.5UnregisteredTrialVersionEA7.5UnregisteredTrialVersionEA7.5UnregisteredTrialVersionEA7.5UnregisteredTrialVersionSparkManager{leaf}+DATE_SECOND_FORMATTER:SimpleDateFormat=newSimpleDateF...{readOnly}+addFeature(String):void+getApplicationImage():ImageIcon+getChatManager():ChatManager+getClipboard():String+getConnection():XMPPConnection+getContactList():ContactList+getFocusedComponent():Component+getMainWindow():MainWindow+getMessageEventManager():MessageEventManager+getNativeManager():NativeManager+getPreferenceManager():PreferenceManager+getSearchManager():SearchManager+getSessionManager():SessionManager+getSoundManager():SoundManager+getTransferManager():SparkTransferManager+getUserDirectory():File+getUserManager():UserManager+getVCardManager():VCardManager+getWorkspace():Workspace+printChatRoomTranscript(ChatRoom):void+printChatTranscript(TranscriptWindow):void+removeFeature(String):void+setClipboard(String):void••ChatManagerChatManager负责负责chatchat事件监听的注册和事件监听的注册和chatroomUIchatroomUI的相关等的相关等classsparkEA7.5UnregisteredTrialVersionEA7.5UnregisteredTrialVersionEA7.5UnregisteredTrialVersionEA7.5UnregisteredTrialVersionEA7.5UnregisteredTrialVersionEA7.5UnregisteredTrialVersionEA7.5UnregisteredTrialVersionEA7.5UnregisteredTrialVersionEA7.5UnregisteredTrialVersionEA7.5UnregisteredTrialVersionEA7.5UnregisteredTrialVersionEA7.5UnregisteredTrialVersionEA7.5UnregisteredTrialVersionEA7.5UnregisteredTrialVersionEA7.5UnregisteredTrialVersionEA7.5UnregisteredTrialVersionEA7.5UnregisteredTrialVersionEA7.5UnregisteredTrialVersionEA7.5UnregisteredTrialVersionEA7.5UnregisteredTrialVersionEA7.5UnregisteredTrialVersionEA7.5UnregisteredTrialVersionEA7.5UnregisteredTrialVersionEA7.5UnregisteredTrialVersionEA7.5UnregisteredTrialVersionEA7.5UnregisteredTrialVersionEA7.5UnregisteredTrialVersionEA7.5UnregisteredTrialVersionEA7.5UnregisteredTrialVersionEA7.5UnregisteredTrialVersionEA7.5UnregisteredTrialVersionEA7.5UnregisteredTrialVersionEA7.5UnregisteredTrialVersionEA7.5UnregisteredTrialVersionEA7.5UnregisteredTrialVersionEA7.5UnregisteredTrialVersionEA7.5UnregisteredTrialVersionEA7.5UnregisteredTrialVersionChatManager+COLORS:Color([])={Color.red,Col...+ERROR_COLOR:Color=(Color)UIManage...+FROM_COLOR:Color=(Color)UIManage...+NOTIFICATION_COLOR:Color=(Color)UIManage...+TO_COLOR:Color=(Color)UIManage...+activateChat(String,String):void+addChatRoomListener(ChatRoomListener):void+addContactItemHandler(ContactItemHandler):void+addGlobalMessageListener(GlobalMessageListener):void+addInvitationListener(RoomInvitationListener):void+addMessageFilter(MessageFilter):void+addSparkTabHandler(SparkTabHandler):void+addTranscriptWindowInterceptor(TranscriptWindowInterceptor):void+addTypingNotification(ChatRoom):void+c