这是我第一次使用RMI,基本上我设法在我的PC本地运行下面的RMI示例,但不是通过两个独立的Linux机器。
服务器界面:
public interface PowerService extends Remote{
public BigInteger square ( int number )
throws RemoteException;
public BigInteger power ( int num1, int num2)
throws RemoteException;
}
服务器:
public class PowerServiceServer extends UnicastRemoteObject implements
PowerService {
public PowerServiceServer() throws RemoteException {
super();
}
public BigInteger square(int number) throws RemoteException {
imp .....
return (bi);
}
public BigInteger power(int num1, int num2) throws RemoteException {
imp .....
return bi;
}
public static void main(String[] args) throws Exception {
PowerServiceServer svr = new PowerServiceServer();
// ... and bind it with the RMI Registry
Naming.bind("PowerService", svr);
System.out.println("Service bound....");
}
}
客户:
public class PowerServiceClient {
public static void main(String args[]) throws Exception {
// Call registry for PowerService
PowerService service = (PowerService) Naming.lookup("rmi://" + args[0]
+ "/PowerService");
DataInputStream din = new DataInputStream(System.in);
for (;;) {
System.out.println("1 - Calculate square");
System.out.println("2 - Calculate power");
System.out.println("3 - Exit");
System.out.println();
System.out.print("Choice : ");
String line = din.readLine();
Integer choice = new Integer(line);
int value = choice.intValue();
switch (value) {
case 1:
// Call remote method
....................
break;
case 2:
// Call remote method
....................
break;
case 3:
System.exit(0);
default:
System.out.println("Invalid option");
break;
}
}
}
客户端接口与服务器接口相同
这是我为了运行rmi示例所做的:
1) 在服务器端,我创建了存根
2) 跑马场
3)运行服务器
4)我将存根从服务器端复制到客户端到同一个包中
5) 运行客户端
运行客户端后,我收到以下错误消息:
线程“main”java中出现异常。马绍尔群岛共和国。ConnectException:拒绝连接到主机:127.0.0.1;嵌套的例外是:java。网ConnectException:连接在sun被拒绝。马绍尔群岛共和国。运输tcp。Tpendpoint。sun上的newSocket(TCPEndpoint.java:601)。马绍尔群岛共和国。运输tcp。tcp频道。在sun上创建连接(TCPChannel.java:198)。马绍尔群岛共和国。运输tcp。tcp频道。sun上的新连接(TCPChannel.java:184)。马绍尔群岛共和国。服务器UnicastRef。在计算时调用(UnicastRef.java:110)。PowerServiceServer_存根。方形(未知来源)
可能是由于防火墙的原因,我无法连接,或者我做错了什么??
谢谢
这就是java解决的问题。马绍尔群岛共和国。服务器主机名
参见RMI常见问题解答中的项目A.1。您需要修复导致它的/etc/hosts配置错误,或者设置系统属性
java。马绍尔群岛共和国。服务器导出任何远程对象之前,将服务器JVM中的主机名
设置为服务器的正确IP地址。
问题内容: 我已经为RMI的客户端编写了以下代码。但是得到 代码: 问题答案: 如果要在绑定,重新绑定或查找时获取该注册表,则注册表不会运行。如果让它进行远程调用,请参阅Javadoc随附的RMI FAQ 中的项目A.1 ,如果您正在运行Linux,还请检查/ etc / hosts文件是否将127.0.0.1映射到localhost和您的真实IP地址。到您的真实主机名- 在某些Linux发行版中
我决定写RMI(从书中)也从书中获取代码。我用rmic创建了存根,并启动了rmiregistry,但当我决定编写java启动服务器时,我遇到了一个问题,实际上我面临的问题是:java-classpath D:\RMI AddServer Exception:java。马绍尔群岛共和国。ServerException:服务器线程中发生RemoteException;唯一的例外是:java。马绍尔群岛
我正在尝试连接到MBean服务器。我需要编写JMX客户端应用程序。这是用于客户端应用程序的代码。但我有一个例外 检索RMIServer存根失败:javax.naming.ServiceUnavailableException[根异常为java.rmi.ConnectException:连接拒绝主机:localhost;嵌套异常为: 谁能帮我把这个修好。 我使用以下参数运行了这段代码。 dcom.s
代码片段如下所示: 如果有人有决议,请帮忙?
问题内容: 我可以知道Java RMI连接使用哪个端口吗? 如果要使用RMI连接将Java客户端应用程序连接到Java服务器应用程序,我需要在服务器计算机上打开哪个端口,以便客户端应用程序可以连接到该端口? 我想在服务器计算机上设置防火墙,但是我不知道应该打开哪个端口。 问题答案: RMI通常无法在防火墙上工作,因为它使用不可预测的端口(它始于1099,然后再使用随机端口运行)。 在这些情况下,通
以下错误在连接 sqlserver(java) 时抛出。我不知道这个问题的根本原因。 如果有人遇到这个问题,请让我们知道,如何解决这个问题?