六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

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

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

[摘要]遠程訪問Mnemosyne  下面我們來討論在servlet服務器上訪問遠程Mnemosyne的方法。要在無需特定服務器在線的情況下加載一個包含對話信息的Mnemosyne,需要創建一個FailoverHandler的實例,FailoverHandler利用JDK 1.3中的Proxy API處理...
遠程訪問Mnemosyne

  下面我們來討論在servlet服務器上訪問遠程Mnemosyne的方法。要在無需特定服務器在線的情況下加載一個包含對話信息的Mnemosyne,需要創建一個FailoverHandler的實例,FailoverHandler利用JDK 1.3中的Proxy API處理對話服務器當機的問題。FailoverHandler把一個代表訪問遠程對話服務器的RMI URL的字符串數組作為參數,然后,從Proxy類中獲取Mnemosyne實例。下面的SessionManager類中的initializeMnemosyne()方法可以顯示出這一切是如何完成的:


public static void initializeMnemosyne(String[] rmiURLs)
{
// 設置當機服務器的處理程序
FailoverHandler fh = new FailoverHandler(null, rmiURLs);

// 得到Mnemosyne. 的一個實例
_Mnemosyne =
(Mnemosyne)Proxy.newProxyInstance(Mnemosyne.class.getClassLoader(),
new Class[] { Mnemosyne.class },
fh );
}



  如果用Proxy類獲取Mnemosyne的實例,所有的方法調用必須通過FailoverHandler的 invoke()方法進行。當有方法訪問Mnemosyne時,FailoverHandler將試著調用該方法訪問一個遠程對象。如果方法調用失敗(例如服務器關機),FailoverHandler將從提供給構造器的URL清單中再取得下一個URL,這樣就會無縫地轉向下一個對話服務器。


// 建立遠程加載類的URL清單
public FailoverHandler(Remote delegate, String[] delegateURLS)
{
this.delegateURLS = delegateURLS;

// 如果這個URL無效,則獲取下一個有效的URL
try {
this.delegate =
((delegate == null)?getNextValidDelegate():delegate);
} catch (RemoteException ex) {
// 如果發生遠程意外錯誤,則該URL不能使用,向調用者發送一個 //IllegalArgumentException事件
throw new IllegalArgumentException("Remote URLs could not "
+ "be found");
}

}

public Object invoke(Object proxy,
Method method,
Object[] arguments)
throws Throwable
{
while(true)
{
try
{
file:// 嘗試對獲得的最后一個URL調用被調用的方法
return method.invoke(delegate, arguments);
}
catch(InvocationTargetException invocationTargetException)
{
file://如果獲得的URL無效,則取下一個URL
try
{
throw invocationTargetException.getTargetException();
}
catch(RemoteException remoteException)
{
delegate = getNextValidDelegate();
}
}
}
}

file://從構造器中的URL清單中獲得下一個URL
protected Remote getNextValidDelegate() throws RemoteException
{
for(int i = 0; i < delegateURLS.length;i++)
{
try
{
return Naming.lookup(delegateURLS[i]);
}
catch(Exception exception)
{
}
}

throw new RemoteException("All lookup failed");
}


  當使用FailoverHandler對象時,從一個對話服務器向另一個對話服務器的轉換對于調用Mnemosyne的任何用戶端機器都是透明的。


主站蜘蛛池模板: 亚洲国产日韩在线观频 | 青草国产| 一区二区三区在线视频播放 | 人人揉揉香蕉大免费不卡 | 亚洲欧洲尹人香蕉综合 | 图片区小说区欧洲区 | 欧美综合色区 | 欧美一级片手机在线观看 | 首页 亚洲 欧美 制服 丝腿 | 特一级黄 | 色噜噜色偷偷男人的天堂 | 欧美中文字幕在线观看 | 亚洲欧美日韩精品永久在线 | 日韩精品综合 | 欧美一区二三区 | 日韩精品一区二区三区中文版 | 午夜精品视频 | 欧美综合亚洲图片综合区 | 青青青国产在线观看免费网站 | 生活片一级 | 欧美午夜免费看爽爽爽 | 欧美视频在线播放观看免费福利资源 | 性荡视频 | 欧美又粗又大又硬又长又爽视频 | 亚洲 欧美 成人日韩 | 青娱乐在线视频播放 | 天天干天天操天天碰 | 偷窥综合网 | 日韩专区亚洲综合久久 | 青娱乐黄色 | 婷婷综合缴情亚洲狠狠图片 | 色一色在线观看视频网站 | 一级黄色在线视频 | 亚洲美女视频一区 | 天天躁夜夜躁 | 最新欧美精品一区二区三区不卡 | 神兵小将第一部 | 日本成人免费在线 | 丝袜美腿美女被狂躁在线观看 | 亚洲欧洲精品一区二区三区 | 青娱乐在线免费观看视频 |