1

Netbeans でクラスの割り当て用に RMI プログラムを作成しています。これは単純な RMI プログラムであり、サーバー側は正常に動作しています。しかし、クライアント側のファイルを実行すると. それは私にエラーを与えることになります

Exception in thread "main" java.security.AccessControlException: access denied ("java.net.SocketPermission" "127.0.0.1:1099" "connect,resolve")

さらに、クライアント コードの 26 行目に何らかのエラーが発生しています。明確に理解するために、3 つのファイルすべての完全なコードを示します。

Interface.java :

package RMI;

import java.rmi.Remote;
import java.rmi.RemoteException;

public interface DemoInterface extends Remote {

    public String SayDemo() throws RemoteException;

}

サーバー.java

package RMI;

import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.UnicastRemoteObject;

public class Server implements Interface{
    public Server()
    {
        super();
    }
    private  String message;
    public Server(String msg) throws RemoteException
    {
        message = msg;
}


public static void main(String[] args) {
    try {
        DemoInterface h = new Server("Hello");
        DemoInterface stub = (DemoInterface) UnicastRemoteObject.exportObject(h,0);
        LocateRegistry.createRegistry(4096);
        Registry registry = LocateRegistry.getRegistry("127.0.0.1",4096);

        registry.rebind("Hello", stub);

        System.out.println("Server is connected and ready to use");
    }
    catch(Exception e)
    {
        System.out.println("server not connected\n"+e);
    }
}
    @Override
public String SayDemo() throws RemoteException {
    System.out.println("Server.saydemo override");
    return message;
}
}

クライアント.java

package RMI;

import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;

public class Client {
public static void main(String[] args) {
  if(System.getSecurityManager() == null)
    {
        System.setSecurityManager(new SecurityManager());
    }
    try {

        Registry reg = LocateRegistry.getRegistry("127.0.0.1", 4096);
        System.out.println("in try after reg locate");
        DemoInterface h = (DemoInterface) reg.lookup("Hello");//Error Showed on this line by netbeans
       System.out.println(h.SayDemo());
    }
    catch(RemoteException | NotBoundException e)
    {
        System.out.println(""+e );
    }
}
}

私が間違っているところを教えてください。前もって感謝します。

4

1 に答える 1