Aiuto rmi

di il
1 risposte

Aiuto rmi

Ho iniziato oggi questo argomento e non l'ho ancora capito bene. Ho provato a fare un esercizietto veloce, ma quando avvio il server mi caccia eccezzioni o nel client o nel server. Il codice non mi sembra sbagliato (anche perché cenrcando online ho visto che molti altri facevanopiù o meno così).
ServerNew.java:

    interface C extends Remote
    {
        public String now() throws RemoteException ;
    }

    class Server extends UnicastRemoteObject implements C
    {    
        public String now() throws RemoteException 
        {
            return "99:99";
        }

        Server() throws RemoteException 
        {

        }

    }

    public class ServerNew
{
    public static void main(String[] args) throws Exception
    {
        Server server=new Server();
        LocateRegistry.createRegistry(1099);
        Naming.rebind("rmi://localhost:1099/time", server);
    }
}
ClientNew.java:
 interface C extends Remote
    {
        public String now() throws RemoteException ;
    }

    public class ClientNew
{
    public static void main(String[] args) throws Exception
    {
        C server=(C) Naming.lookup("rmi://localhost:1099/time");
        String text=server.now();
        System.out.println(text);
    }
}
Output (
ClientNew.java:16
è la riga
Naming.lookup
):
Exception in thread "main" java.rmi.UnmarshalException: error unmarshalling return; nested exception is: 
	java.lang.ClassNotFoundException: servernew.C (no security manager: RMI class loader disabled)
	at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
	at java.rmi.Naming.lookup(Naming.java:101)
	at clientnew.ClientNew.main(ClientNew.java:16)
Caused by: java.lang.ClassNotFoundException: servernew.C (no security manager: RMI class loader disabled)
	at sun.rmi.server.LoaderHandler.loadProxyClass(LoaderHandler.java:554)
	at java.rmi.server.RMIClassLoader$2.loadProxyClass(RMIClassLoader.java:646)
	at java.rmi.server.RMIClassLoader.loadProxyClass(RMIClassLoader.java:311)
	at sun.rmi.server.MarshalInputStream.resolveProxyClass(MarshalInputStream.java:257)
	at java.io.ObjectInputStream.readProxyDesc(ObjectInputStream.java:1549)
	at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1511)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1750)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)
	... 3 more
Java Result: 1
Mi dice in pratica che manca il SecurityManager. Però se nel server lo aggiungo, è il server che da come eccezzione
Exception in thread "main" java.security.AccessControlException: access denied ("java.net.SocketPermission" "127.0.0.1:1099" "connect,resolve")
	at java.security.AccessControlContext.checkPermission(AccessControlContext.java:366)
	at java.security.AccessController.checkPermission(AccessController.java:555)
	at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
	at java.lang.SecurityManager.checkConnect(SecurityManager.java:1051)
	at java.net.Socket.connect(Socket.java:574)
	at java.net.Socket.connect(Socket.java:528)
	at java.net.Socket.<init>(Socket.java:425)
	at java.net.Socket.<init>(Socket.java:208)
	at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:40)
	at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:146)
	at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:613)
	at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:216)
	at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:202)
	at sun.rmi.server.UnicastRef.newCall(UnicastRef.java:340)
	at sun.rmi.registry.RegistryImpl_Stub.rebind(Unknown Source)
	at java.rmi.Naming.rebind(Naming.java:177)
	at servernew.ServerNew.main(ServerNew.java:39)

1 Risposte

Devi accedere o registrarti per scrivere nel forum
1 risposte