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

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

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


主站蜘蛛池模板: 亚洲高清在线播放 | 五月婷综合 | 五月激情婷婷综合 | 性a视频 | 日韩视频中文字幕专区 | 色五丁香 | 手机看片午夜 | 亚洲熟区 | 五月天丁香在线 | 青草视频网址 | 中文字幕第一页国产 | 日本精品视频网站 | 亚洲视频综合 | 一区二区三区欧美日韩 | 欧洲亚洲精品 | 搜索一级黄色片 | 午夜片在线观看 | 婷婷在线五月 | 伊人色综合7777 | 人人干在线| 欧美亚洲91| 亚洲碰碰 | 视频一区二区精品的福利 | 性刺激欧美三级在线观看 | 四虎影视在线影院在线观看 | 四虎www免费人成 | 日本在线精品视频 | 最近在线观看免费完整视频 | 亚洲第一欧美 | 日本黄大片 在线播放 | 窝窝午夜色视频国产精品东北 | 小黄鸭b站视频 | 人禽交在线视频免费播放 | 青草资源视频在线高清观看 | 一区二区三区视频网站 | 午夜激情视频 | 亚洲国产第一页 | 日韩一区二区中文字幕 | 亚洲男人天堂视频 | 婷婷亚洲综合五月天小说 | 奇米在线影视一区二区三 |