<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      分布式對話服務器的管理(3)

      [摘要]當添加或刪除一個Memory對象時,經過同步的本地Mnemosyne對象需要對所有的Mnemosyne進行更新,可以通過notify()方法來完成這一任務。無論是發生write或take事件,Mne...
      當添加或刪除一個Memory對象時,經過同步的本地Mnemosyne對象需要對所有的Mnemosyne進行更新,可以通過notify()方法來完成這一任務。無論是發生write或take事件,Mnemosyne都會針對發生的事件調用適當的監聽者的notify()方法。在synchronize()方法中,我們把本地Mnemosyne注冊為所有遠程Mnemosyne的take和write事件的監聽者,一旦遠程Mnemosyne上有take和write事件發生,就會調用本地 Mnemosyne的notify()方法。然后,本地Mnemosyne必須對事件作出反應。下面是Mnemosyne如何與遠程Mnemosyne進行同步的例子:


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

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



        現在已經創建了一個控制所有memory對象的Mnemosyne,它自動與遠程Mnemosyne保持同步,如果任何一個遠程Mnemosynes得到或失去一個Memory對象時,都可以使它保持最新的狀態。

        要通過Mnemosyne管理HTTP對話,servlet需要創建HttpSession的實例(從HttpServletRequest中使用getSession()),在實現Memory對象的類中封裝對話,并調用Mnemosyne對象的write()方法把封裝類寫到一個Mnemosyne中。

        通過調用write()方法,封裝著對話的Memory對象沿著網絡傳送給Mnemosyne,并通知遠程機器。當對象被寫到Mnemosyne時,WriteRemoteEvent被發送給在Mnemosyne上注冊的所有WriteRemoteEventListeners,這樣,所有其他的Mnemosynes就能將新的對象作為Mnemosynes添加到它們的對話信息存貯庫中。

        要對存貯的對話進行查詢,servlet調用read()方法查找包含對話的Memory對象,如果Mnemosyne找到了要查找的對象,則該對象通過RMI返回到servlet服務器。

        最后,要刪除對話,servlet就會調用Mnemosyne的take()方法,Mnemosyne將象有read事件發生那樣退還Memory對象,同時從其存貯對象庫中刪除該Memory對象。同時,向其所有TakeRemoteEventListeners發送TakeRemoteEvent事件,通知所有的遠程Mnemosynes該Memory對象已經被刪除了。

        建立對話服務器

        上面我們已經討論了如何在多服務器上維護對話存貯庫,下面我們將討論如何建立對話服務器。在初始化過程中,對話服務器完成下列任務:

        ━━創建本地Mnemosyne對象。

        ━━把本地Mnemosyne綁定到RMI。

        ━━把本地Mnemosyne與其他的遠程Mnemosyne進行同步。


      日韩精品一区二区三区高清