承接上篇:資源註冊中心要實現對資源持有者的健康檢查,那麼他必須有所有已提交過註冊的資源持有者節點位址。
此處的健康檢查是採用定時的方式,去連線請求 資源持有者節點。
下面是自己做的乙個定時器小工具:
public abstract class didadida implements runnable
public didadida(long delay)
public long getdelay()
public abstract void doing();
//啟動定時器
public void startup()
goon = true;
new thread(this, "定時器").start(); }
//關閉定時器
public void stop()
goon = false; }
@override
public void run() catch (interruptedexception e)
}} }
//開啟執行緒執行doing()方法
private class innerwoker implements runnable
@override
public void run() }}
說一下nodepool的資料結構:一對一結構。
concurrenthashmap鍵: defaultnetnode物件的hashcode 值:defaultnetnode物件
nodepool**如下:
public class nodepool
public static void stopscannode()
public static void add(defaultnetnode node)
nodepool.put(key, new resourceholdernode(node)); }
public static void remove(defaultnetnode node) }
static class scantimer extends didadida
public scantimer(long delay)
@override
public void doing()
iteratornodelist = nodepool.values().iterator();
while(nodelist.hasnext()) catch (exception e)
}}
}}
要想成功進行健康檢測,那麼資源註冊中心必須能夠主動連線資源持有者,即要利用rmiclient。此處的健康監測是在nodepool中進行的。故nodepool中儲存的節點用defaultnetnode(只有ip和port)是不行的。而是需要乙個能夠實在進行通訊的網路節點,故在填充nodepool的時候儲存的應該是resourceholdernode。
resourceholdernode:
public class resourceholdernode extends defaultnetnode
//檢測健康情況
public boolean isactive() throws exception
}
接下來是真正的資源持有者resourceholder:
public class resourceholder extends resourcer
public resourceholder(string ip, int port)
/*** 執行遠端方法 註冊資源
*/public void registry(resourceinfo resourceinfo)
public void logout(resourceinfo resourceinfo)
public void shutdown()
}
對於資源請求者 其實它的實現很簡單,他只需要向資源註冊中心傳送 「獲取某資源對應的資源持有者集合」即可。
resourcerequester:
public class resourcerequester extends resourcer
public listgetaddresslist(resourceinfo resourceinfo)
}
至此基本上就完成了整個「資源發現工具」的所有內容。
測試是必要的。利用兩個測試類:
testholder:
public class testholder
}
testrequester:
public class testrequester else
} }}
先執行testholder可以看到輸出結果:
再執行testrequester結果:
MockServer的測試思想與實現(下篇)
mockserver的技術實現 目前,筆者已經用python實現了乙個基於socket介面的mock server並在測試中進行了一定的應用,實現中利用了一些python的語言特性 一點rpc技術和一點dsl的技巧。乙個case 下面先看乙個實際的case,case加入了許額外的注釋,以解釋這段 的...
CoAP學習筆記 CoAP資源發現
coap協議專門為m2m通訊設計 裝置間通訊 在裝置通訊過程中很少會有人的干預。為了實現在沒有人干預的情況下正常工作,coap提供了資源發現機制。這就是的客戶端理解哪些uri是被支援,並且客戶端可以獲知該uri的具體含義。coap協議建議,伺服器端應該支援乙個 well known core,該ur...
FTP資源 發現乙個ArcGIS相關的FTP。
用谷歌 在搜尋 arcgisenginert的時候,發現了乙個站點 目錄下有 esri version 10.0 13 6 17 下午1 08 00 esri version 10.1 12 10 3 上午12 00 00 esri version 9.3.1 13 6 17 下午1 12 00 p...