如何在不同的机器上设置多个 RMI 服务器?
How to set up multiple RMI servers on different machines?
我有一个 RMI CalculatorServer 和一个 CalculatorClient class。
出于负载均衡的目的,我想知道如何设置几台服务器,每台服务器都在一台单独的机器上,以便多个客户端可以访问任何一台服务器。
CalculatorServer.java
public class CalculatorServer implements Serializable{
public static void main(String[] args) {
try{
Registry reg = LocateRegistry.createRegistry(7000);
CalculatorImpl ci = new CalculatorImpl();
reg.bind("calc", ci);
JOptionPane.showMessageDialog(null, "Server Started.");
}
catch(RemoteException e){
System.out.println("Server Remote Exception: "+e);
}
catch(AlreadyBoundException e){
System.out.println("Server Already Bound Exception: "+e);
}
}
}
CalculatorClient.java
public class CalculatorClient {
public static void main(String[] args) {
Scanner sn = new Scanner(System.in);
System.out.println("Enter first number :");
int x = sn.nextInt();
System.out.println("Enter second number :");
int y = sn.nextInt();
try{
Registry reg = LocateRegistry.getRegistry("127.0.0.1", 7000);
CalculatorInterface ci = (CalculatorInterface)reg.lookup("calc");
int sum = ci.add(x, y);
System.out.println("Sum is: "+sum);
}
catch(RemoteException e){
System.out.println(" Client Remote Exception: "+e);
}
catch(NotBoundException e){
System.out.println(" Client Remote Exception: "+e);
}
}
}
假设您有多个服务器(例如 5 个)。您可以使用所有 5 个 IP 地址填充数组列表。然后每次客户端发出请求时,select 来自 arraylist 的随机服务器 IP。
public class generateServerIP {
public static void main(String args[]){
ArrayList<String> al = new ArrayList<>();
al.add("172.62.22.103");
al.add("172.62.22.123");
al.add("172.62.22.15");
al.add("172.62.22.187");
al.add("172.62.22.110");
int ip = new Random().nextInt(al.size());
System.out.println(al.get(ip));
}
}
要连接到服务器,请使用以下命令:
Registry reg = LocateRegistry.getRegistry(ip, 7000);
nextInt(int n)方法使用均匀分布,因此从arraylist中选择任何ip的概率等于选择任何其他ip的概率。
我有一个 RMI CalculatorServer 和一个 CalculatorClient class。 出于负载均衡的目的,我想知道如何设置几台服务器,每台服务器都在一台单独的机器上,以便多个客户端可以访问任何一台服务器。
CalculatorServer.java
public class CalculatorServer implements Serializable{
public static void main(String[] args) {
try{
Registry reg = LocateRegistry.createRegistry(7000);
CalculatorImpl ci = new CalculatorImpl();
reg.bind("calc", ci);
JOptionPane.showMessageDialog(null, "Server Started.");
}
catch(RemoteException e){
System.out.println("Server Remote Exception: "+e);
}
catch(AlreadyBoundException e){
System.out.println("Server Already Bound Exception: "+e);
}
}
}
CalculatorClient.java
public class CalculatorClient {
public static void main(String[] args) {
Scanner sn = new Scanner(System.in);
System.out.println("Enter first number :");
int x = sn.nextInt();
System.out.println("Enter second number :");
int y = sn.nextInt();
try{
Registry reg = LocateRegistry.getRegistry("127.0.0.1", 7000);
CalculatorInterface ci = (CalculatorInterface)reg.lookup("calc");
int sum = ci.add(x, y);
System.out.println("Sum is: "+sum);
}
catch(RemoteException e){
System.out.println(" Client Remote Exception: "+e);
}
catch(NotBoundException e){
System.out.println(" Client Remote Exception: "+e);
}
}
}
假设您有多个服务器(例如 5 个)。您可以使用所有 5 个 IP 地址填充数组列表。然后每次客户端发出请求时,select 来自 arraylist 的随机服务器 IP。
public class generateServerIP {
public static void main(String args[]){
ArrayList<String> al = new ArrayList<>();
al.add("172.62.22.103");
al.add("172.62.22.123");
al.add("172.62.22.15");
al.add("172.62.22.187");
al.add("172.62.22.110");
int ip = new Random().nextInt(al.size());
System.out.println(al.get(ip));
}
}
要连接到服务器,请使用以下命令:
Registry reg = LocateRegistry.getRegistry(ip, 7000);
nextInt(int n)方法使用均匀分布,因此从arraylist中选择任何ip的概率等于选择任何其他ip的概率。