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ì). Qualcuno mi sa aiutare?
codice: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); } }Ora se avvio, il server non da problemi, ma se avvio il client, mi butta questo:codice: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); } }
Leggendo vedo che c'entra il SecurityManager. Se lo aggiungo al server, il server non va più mostrandomi invece:codice: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
codice: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)

Rispondi quotando