bbossaop遠端服務介紹-點對點遠端服務呼叫和組播服務呼叫的區別

bboss發表於2009-04-26


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引數對應伺服器的ipport引數對應伺服器的埠,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配置成相同的地址。


相關文章