【发布时间】:2015-03-18 17:45:01
【问题描述】:
我有一个 RMI CalculatorServer 和一个 CalculatorClient 类。 出于负载平衡的目的,我想知道如何设置多个服务器,每个服务器在单独的机器上,以便多个客户端可以访问任何服务器。
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);
}
}
}
【问题讨论】:
-
定义“创建”。不清楚你在问什么。
-
我想在每台服务器上拥有 CalculatorServer.java 类(及其实现)的多个副本。那么任何客户端都必须能够访问任何服务器。
-
你这样做的问题是什么?
-
问题是客户端只能访问一台服务器。在我的 CalculatorClient.java 中,我有以下行,它使用特定的 IP 地址“连接”到特定的主机:Registry reg = LocateRegistry.getRegistry("127.0.0.1", 7000);。我想要一个服务器池,客户端可以访问任何服务器。
-
我想您已经发现了 JavaEE 被发明的原因之一......
标签: java jakarta-ee rmi