JAVA RMI添加示例

  • 本文关键字:添加 RMI JAVA java rmi
  • 更新时间 :
  • 英文 :


我正在实现一个简单的Java RMI应用程序。它的主要目标是添加2个整数。代码源如下:客户端和服务器端的AdditionInterfaceimport java.rmi.*; public interface AdditionInterface extends Remote { public int add(int a,int b) throws RemoteException; }

Addition.java

import java.rmi.*;
import java.rmi.server.*;
public class Addition extends UnicastRemoteObject
implements AdditionInterface {
public Addition () throws RemoteException { }
public int add(int a, int b) throws RemoteException {
int result=a+b;
return result;
}
}

添加服务器

import java.rmi.*;
import java.rmi.server.*;
public class AdditionServer {
public static void main (String[] argv) {
try {
System.setSecurityManager(new SecurityManager());
Addition Hello = new Addition();
Naming.rebind("rmi://localhost/ABC", Hello);
System.out.println("Addition Server is ready.");
}catch (Exception e) {
System.out.println("Addition Server failed: " + e);
}
}
}

添加客户端

import java.rmi.*;
public class AdditionClient {
public static void main (String[] args) {
AdditionInterface hello;
try {
System.setSecurityManager(new SecurityManager());
hello = (AdditionInterface)Naming.lookup("rmi://localhost/ABC");
int result=hello.add(9,10);
System.out.println("Result is :"+result);
}catch (Exception e) {
System.out.println("HelloClient exception: " + e);
}
}
}

客户端和服务器端的安全策略

grant {
permission java.security.AllPermission;
};

然而,我得到了HelloClient异常:java.security.AccessControlException:拒绝访问("java.net.SocketPermission"127.0.0.1:1099"connect,resolve"(错误

您必须首先启动RMI注册表。尝试呼叫

java.rmi.registry.LocateRegistry.createRegistry(1099);

在尝试(重新(绑定远程对象之前。我不确定,但如果注册表已经启动,此调用可能会失败。您的第二个问题可能是SecurityManager应用的策略没有连接/解析localhost的权限。尝试注释System.setSecurityManager(new SecurityManager());以开始。默认的java策略文件只有一个SocketPermission被授予:

permission java.net.SocketPermission "localhost:0", "listen";

最新更新