• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        當(dāng)前位置:雨林木風(fēng)下載站 > 技術(shù)開(kāi)發(fā)教程 > 詳細(xì)頁(yè)面

        分布式對(duì)話服務(wù)器的管理(3)

        分布式對(duì)話服務(wù)器的管理(3)

        更新時(shí)間:2022-04-26 文章作者:未知 信息來(lái)源:網(wǎng)絡(luò) 閱讀次數(shù):

        當(dāng)添加或刪除一個(gè)Memory對(duì)象時(shí),經(jīng)過(guò)同步的本地Mnemosyne對(duì)象需要對(duì)所有的Mnemosyne進(jìn)行更新,可以通過(guò)notify()方法來(lái)完成這一任務(wù)。無(wú)論是發(fā)生write或take事件,Mnemosyne都會(huì)針對(duì)發(fā)生的事件調(diào)用適當(dāng)?shù)谋O(jiān)聽(tīng)者的notify()方法。在synchronize()方法中,我們把本地Mnemosyne注冊(cè)為所有遠(yuǎn)程Mnemosyne的take和write事件的監(jiān)聽(tīng)者,一旦遠(yuǎn)程Mnemosyne上有take和write事件發(fā)生,就會(huì)調(diào)用本地 Mnemosyne的notify()方法。然后,本地Mnemosyne必須對(duì)事件作出反應(yīng)。下面是Mnemosyne如何與遠(yuǎn)程Mnemosyne進(jìn)行同步的例子:


        public void notify(RemoteEvent remoteEvent) throws RemoteException
        {
        // 回寫被寫的內(nèi)存,但無(wú)需通知所有的Mnemosyne
        if(remoteEvent instanceof WriteRemoteEvent)
        {
        WriteRemoteEvent wre = (WriteRemoteEvent) remoteEvent;
        commonContext.silentWrite(wre.getMemory());
        }

        file:// 取被寫的Memory,但無(wú)需通知所有的Mnemosyne
        if(remoteEvent instanceof TakeRemoteEvent)
        {
        TakeRemoteEvent tre = (TakeRemoteEvent) remoteEvent;
        commonContext.silentTake(tre.getMemory());
        }
        }



          現(xiàn)在已經(jīng)創(chuàng)建了一個(gè)控制所有memory對(duì)象的Mnemosyne,它自動(dòng)與遠(yuǎn)程Mnemosyne保持同步,如果任何一個(gè)遠(yuǎn)程Mnemosynes得到或失去一個(gè)Memory對(duì)象時(shí),都可以使它保持最新的狀態(tài)。

          要通過(guò)Mnemosyne管理HTTP對(duì)話,servlet需要?jiǎng)?chuàng)建HttpSession的實(shí)例(從HttpServletRequest中使用getSession()),在實(shí)現(xiàn)Memory對(duì)象的類中封裝對(duì)話,并調(diào)用Mnemosyne對(duì)象的write()方法把封裝類寫到一個(gè)Mnemosyne中。

          通過(guò)調(diào)用write()方法,封裝著對(duì)話的Memory對(duì)象沿著網(wǎng)絡(luò)傳送給Mnemosyne,并通知遠(yuǎn)程機(jī)器。當(dāng)對(duì)象被寫到Mnemosyne時(shí),WriteRemoteEvent被發(fā)送給在Mnemosyne上注冊(cè)的所有WriteRemoteEventListeners,這樣,所有其他的Mnemosynes就能將新的對(duì)象作為Mnemosynes添加到它們的對(duì)話信息存貯庫(kù)中。

          要對(duì)存貯的對(duì)話進(jìn)行查詢,servlet調(diào)用read()方法查找包含對(duì)話的Memory對(duì)象,如果Mnemosyne找到了要查找的對(duì)象,則該對(duì)象通過(guò)RMI返回到servlet服務(wù)器。

          最后,要?jiǎng)h除對(duì)話,servlet就會(huì)調(diào)用Mnemosyne的take()方法,Mnemosyne將象有read事件發(fā)生那樣退還Memory對(duì)象,同時(shí)從其存貯對(duì)象庫(kù)中刪除該Memory對(duì)象。同時(shí),向其所有TakeRemoteEventListeners發(fā)送TakeRemoteEvent事件,通知所有的遠(yuǎn)程Mnemosynes該Memory對(duì)象已經(jīng)被刪除了。

          建立對(duì)話服務(wù)器

          上面我們已經(jīng)討論了如何在多服務(wù)器上維護(hù)對(duì)話存貯庫(kù),下面我們將討論如何建立對(duì)話服務(wù)器。在初始化過(guò)程中,對(duì)話服務(wù)器完成下列任務(wù):

          ━━創(chuàng)建本地Mnemosyne對(duì)象。

          ━━把本地Mnemosyne綁定到RMI。

          ━━把本地Mnemosyne與其他的遠(yuǎn)程Mnemosyne進(jìn)行同步。

        溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!

        本類教程下載

        系統(tǒng)下載排行

        主站蜘蛛池模板: 中文字幕av免费专区| 黄人成a动漫片免费网站| 久久国产乱子精品免费女| 四虎影视永久免费观看| 色屁屁www影院免费观看视频| 全免费一级午夜毛片| 亚洲精品国产av成拍色拍| 日韩特黄特色大片免费视频| 国产精品久久亚洲一区二区| 亚洲成A人片在线观看中文| 特级毛片全部免费播放a一级| 亚洲第一网站男人都懂| 久久国产一片免费观看| 国产成人高清亚洲| 免费一级毛片在线播放视频| 亚洲国产亚洲综合在线尤物| 免费特级黄毛片在线成人观看| 直接进入免费看黄的网站| 亚洲香蕉成人AV网站在线观看| 免费在线看黄的网站| 青青青国产在线观看免费| 婷婷亚洲综合五月天小说在线| 国产成人A亚洲精V品无码| 无人在线观看免费高清| 国产精品亚洲片在线va| 又爽又黄无遮挡高清免费视频| 中文字幕成人免费高清在线 | 亚洲成无码人在线观看| 精品国产免费一区二区| 亚洲免费一区二区| 亚洲国产成人久久三区| 免费播放特黄特色毛片| 久久久久高潮毛片免费全部播放| 亚洲天然素人无码专区| 久久亚洲精品无码观看不卡| 91精品国产免费久久久久久青草| 亚洲国产精品无码中文lv| 国产AV无码专区亚洲Av| 大学生一级特黄的免费大片视频| 久久精品免费网站网| 亚洲高清视频在线|