bboss 項目下載下傳位址:
https://sourceforge.net/project/showfiles.php?group_id=238653點對點遠端服務調用群組播服務調用的差別主要在于
1. 方法有傳回值時其傳回值不同。
在執行個體中我們看到元件方法:
public Object handle(){
return new Integer(1);
}
的傳回值類型是Object,實際上傳回的是一個Integer類型的對象。在點對點遠端服務調用的測試方法中,我們直接将服務方法的傳回值直接轉換為Integer類型:
ServiceInf rpc = (test.ServiceInf)BaseSPIManager
.getProvider("(172.16.17.51:1185; 172.16.17.56:1185)/managerid");
Integer object = (Integer)rpc. handle();
但是在多點傳播調用遠端服務的測試方法中,不能這樣處理,原因是送出請求的每台伺服器都會有一個傳回值,是以rpc. handle()調用的結果将是一個傳回值的集合,如果需要擷取特定伺服器的傳回值,必須通過以下方法來擷取:
BaseSPIManager.getRPCResult(serverip, port, object);
Serverip參數對應伺服器的ip,port參數對應伺服器的端口,object參數為所有伺服器的傳回值的集合。
例如:
ServiceInf rpc = (test.ServiceInf)BaseSPIManager.getProvider("(172.16.17.51:1185; 172.16.17.56:1185)/managerid");
Object object = rpc .handle();
Integer value = (Integer)BaseSPIManager.getRPCResult("172.16.17.56", "1185", object);
Integer value1 = (Integer)BaseSPIManager.getRPCResult("172.16.17.51", "1185", object);
2. 配置遠端元件時,對多點傳播位址的配置要求不一樣
在遠端管理元件的配置檔案etc/META-INF/replSync-service-aop.xml,我們需要配置兩個屬性:
多點傳播位址 mcast_addr="228.10.10.178"
綁定端口 bind_port="1185"
每個伺服器都可以配置自己的多點傳播位址和綁定端口,如果兩台伺服器之間發出的所有遠端服務請求都是點對點的方式發出的,那麼多點傳播位址 mcast_addr就可以配置成不相同的位址,當然相同的位址也可以(盡量不要配置成相同的多點傳播位址);如果伺服器之間發出的遠端服務請求隻要有同時發出對多台伺服器調用的情況時,就需要将多點傳播位址mcast_addr配置成相同的位址。