bbossaop遠端服務介紹-遠端服務呼叫例項
環境準備
準備三臺伺服器
n 伺服器A
Ip 172.16.17.56
埠 1185
n 伺服器B
Ip 172.16.17.51
埠 1185
n 伺服器C
Ip 172.16.17.52
埠 1185
服務部署
假設我們已經定義了業務元件test.A和test.B,分別實現介面test.ServiceInf。服務中定義了方法handle(),返回值為Object,方法程式碼如下:
public Object handle(){
return new Integer(1);
}
在A,B,C三臺伺服器上分別部署管理服務managerid,建立配置檔案service-assemble.xml內容如下:
<manager-config>
<manager id=“managerid” //管理服務id
singlable=“true” //單列模式
>
<provider type=“provider_a” //provider實現a
class=“test.A” />
<provider type=“provider_b” //provider實現b
class=“test.B” />
<transactions>
<method name=“handle” txtype=“REQUIRED_TRANSACTION”/>
</transactions>
</manager>
<manager-config>
然後將service-assemble.xml匯入到主配置檔案manager-provider.xml檔案:
<manager-config>
<managerimport file=“com/chinacreator/spi/rpc/service-assemble.xml” />
</manager-config>
在主配置檔案manager-provider.xml中新增以下配置,作為遠端管理元件啟用的控制開關:
<manager-config>
<properties>
<property name=“cluster_enable” value=“true”/> //啟用遠端管理元件
<property name=“cluster_mbean_enable” value=“true”/> //啟用遠端管理元件的mbean監控功能,目前未使用
<property name=“cluster_name” value=“Cluster”/> //遠端管理元件名稱
</properties>
<managerimport file=“com/chinacreator/spi/rpc/service-assemble.xml” />
</manager-config>
配置伺服器間通訊埠和組播地址
在遠端管理元件的配置檔案etc/META-INF/replSync-service-aop.xml
中修改bind_port屬性:
bind_port=“1185”
修改組播地址:
mcast_addr=“228.10.10.178”
客服端程式編寫
package com.chinacreator.spi.rpc;
import com.chinacreator.spi.BaseSPIManager;
import com.chinacreator.spi.SPIException;
public class Test {
public static void testMutirpcCall() {
try {
ServiceInf rpc = (test.ServiceInf)BaseSPIManager
.getProvider(“(172.16.17.51:1185; 172.16.17.56:1185)/managerid”);
// RPCTest rpc = (RPCTest)BaseSPIManager.getProvider(“managerid“);
// RPCTest rpc =
// (RPCTest)BaseSPIManager.getProvider(“(_self)/managerid“);
// RPCTest rpc1 = (RPCTest)BaseSPIManager.getProvider(
// “(172.16.17.52: 1185;172.16.17.56: 1185)/managerid “);
// RPCTest rpc2 =
// (RPCTest)BaseSPIManager.getProvider(“(all)/managerid“);
long s = System.currentTimeMillis();
Integer object = (Integer)rpc. handle();
System.out.println(BaseSPIManager.getRPCResult(“172.16.17.51”, “1185”, object));
System.out.println(BaseSPIManager.getRPCResult(“172.16.17.56”, “1185”, object));
long e = System.currentTimeMillis();
System.out.println((e – s) / 1000 + “秒“);
} catch (SPIException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void testsinglerpcCall() {
try {
ServiceInf rpc = (test.ServiceInf)BaseSPIManager.getProvider(“(172.16.17.56:1185)/managerid”);
long s = System.currentTimeMillis();
Object object = rpc. handle();
System.out.println(object);
long e = System.currentTimeMillis();
System.out.println((e – s) / 1000 + “秒“);
} catch (SPIException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void testAllrpcCall() {
try {
ServiceInf rpc = (test.ServiceInf)BaseSPIManager.getProvider(“(all)/managerid”);
long s = System.currentTimeMillis();
Object object = rpc .handle();
System.out.println(BaseSPIManager.getRPCResult(“172.16.17.51”, “1185”, object));
System.out.println(BaseSPIManager.getRPCResult(“172.16.17.52”, “1185”, object));
System.out.println(BaseSPIManager.getRPCResult(“172.16.17.56”, “1185”, object));
long e = System.currentTimeMillis();
System.out.println((e – s) / 1000 + “秒“);
} catch (SPIException e) {
e.printStackTrace();
}
}
}
啟動伺服器
分別在每臺伺服器上執行類com.chinacreator.remote.RunAop的主方法,既可以啟動伺服器。
注意,客服端不要啟動伺服器。
執行客服端
Test.testAllrpcCall();
Test.testMutirpcCall();
Test.testsinglerpcCall();
更詳細的資訊請參考章節【BaseSPIProvider元件介紹中.實現遠端服務呼叫】
相關文章
- bbossaop遠端服務介紹-遠端服務id定義規則
- bbossaop遠端服務介紹-點對點遠端服務呼叫和組播服務呼叫的區別
- bbossaop遠端服務介紹-體系結構
- dubbo 遠端服務無法呼叫
- (2)什麼是服務拆分和遠端呼叫
- Android程式使用SOAP呼叫遠端WebService服務AndroidWeb
- 本地除錯遠端服務除錯
- 《遠端控制》-服務端實現(一)服務端
- spring 的遠端服務是?Spring
- Windows遠端連線Docker服務WindowsDocker
- 遠端終端服務的簡單實現
- 小白的學習筆記——服務拆分和遠端呼叫筆記
- win10 如何開啟遠端服務_win10如何開啟遠端連線服務Win10
- 命令列重啟遠端桌面服務命令列
- Linux下 SSH遠端管理服務Linux
- 服務端Swift Vagrant 工具介紹服務端Swift
- C# 之 服務端獲取遠端資源C#服務端
- Ubuntu開啟ssh服務遠端登入Ubuntu
- Windows遠端桌面服務漏洞預警通告Windows
- 遭遇Tomcat遠端拒絕服務漏洞Tomcat
- jconsole連線遠端服務
- openlayer呼叫wms服務端服務端
- 服務端Swift - Vapor2.0介紹服務端SwiftVapor
- 如何在命令列下遠端安裝終端服務命令列
- 本地MinIO儲存服務Java遠端呼叫上傳檔案Java
- WindowsServer2008R2遠端桌面服務RDS和VDI介紹WindowsServer
- Centos7安裝Xrdp遠端桌面服務CentOS
- 如何在Flutter中整合華為遠端配置服務Flutter
- 快速開啟服務或者IIS或者遠端桌面
- 5分鐘搞定 服務端 本地開發 遠端執行服務端
- spring cloud feign實現遠端呼叫服務傳輸檔案SpringCloud
- RPC框架/高效能遠端同步呼叫框架/分散式服務框架RPC框架分散式
- NFS介紹、NFS服務端安裝配置、NFS配置選項NFS服務端
- bbossgroups2.0-RC版本中如何通過JGroups來實現叢集節點間遠端服務呼叫,或者多伺服器之間遠端服務呼叫伺服器
- SpringCloud(一)微服務遠端呼叫 -- RestTemplateSpringGCCloud微服務REST
- Win Server 2019遠端桌面服務部署Server
- 如何發現遠端伺服器上某埠正在監聽的ORACLE例項/服務伺服器Oracle
- 請教: jboss下 透過rmi呼叫其他機器上的遠端服務