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

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

分布式對話服務器的管理(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的任何用戶端機器都是透明的。


主站蜘蛛池模板: 天天av天天翘天天综合网 | 三区在线观看 | 午夜影视免费观看 | 亚洲免费色| 天天天天做夜夜夜夜做 | 热久久久久久久 | 视频在线二区 | 亚洲成 人a影院青久在线观看 | 五月天婷婷在线观看视频 | 四虎国产精品一区二区 | 亚洲 日本 欧美 中文字幕001 | 探花视频免费播放观看 | 天天色综合社区 | 亚州中文字幕 | 色www精品视频在线观看 | 欧美午夜影院 | 宇都宫紫苑日韩专区亚洲 | 午夜在线一区 | 欧美一级爱爱 | 日韩在线观看网址 | 青草国产精品久久久久久久久 | 青春草视频在线免费观看 | 孕妇三片高清在线观看 | 欧美在线观看一区二区三区 | 中文字幕欧美日韩在线不卡 | 日韩三级精品 | 四虎成人免费网址在线 | 性生大片免费看 | 婷婷激情丁香 | 亚洲第99页| 天天性综合 | 综合激情六月 | 日韩一区二区在线观看 | 四虎成人免费大片在线 | 涩涩涩涩涩涩涩 | 四虎在线影视在线影库 | 日本精品a在线观看 | 人人射人人舔 | 天堂亚洲国产日韩在线看 | 日本一区二区三区四区五区 | 日韩欧美理论片 |