欧美特黄不卡,涩涩视频在线,成人国产精品一区二区网站,亚洲一区二区三区欧美

當(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
{
// 回寫(xiě)被寫(xiě)的內(nèi)存,但無(wú)需通知所有的Mnemosyne
if(remoteEvent instanceof WriteRemoteEvent)
{
WriteRemoteEvent wre = (WriteRemoteEvent) remoteEvent;
commonContext.silentWrite(wre.getMemory());
}

file:// 取被寫(xiě)的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ì)象的類(lèi)中封裝對(duì)話,并調(diào)用Mnemosyne對(duì)象的write()方法把封裝類(lèi)寫(xiě)到一個(gè)Mnemosyne中。

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

  要對(duì)存貯的對(duì)話進(jìn)行查詢(xú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)收藏一下本站!

本類(lèi)教程下載

系統(tǒng)下載排行

主站蜘蛛池模板: 滁州市| 新巴尔虎右旗| 镇远县| 梨树县| 罗城| 英德市| 惠来县| 兰坪| 达拉特旗| 思南县| 哈巴河县| 寿光市| 松潘县| 开鲁县| 米泉市| 中江县| 武功县| 万安县| 平湖市| 叶城县| 阳新县| 民勤县| 嘉荫县| 宜城市| 剑河县| 恭城| 巴楚县| 报价| 平罗县| 班戈县| 屏东市| 温宿县| 鄄城县| 静安区| 屏边| 永城市| 资溪县| 同仁县| 龙泉市| 且末县| 曲周县|