Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Problema con RMI

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2012
    Messaggi
    21

    Problema con 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ì). 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);     
    } 
    }
    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);     
    } 
    }
    Ora se avvio, il server non da problemi, ma se avvio il client, mi butta questo:
    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
    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.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)

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: Problema con RMI

    Originariamente inviato da sawada91
    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.security.AccessControlException: access denied ("java.net.SocketPermission" "127.0.0.1:1099" "connect,resolve")
    Ok hai messo il SecurityManager.. hai settato un file di policy?
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2012
    Messaggi
    21
    Non usa "\Java\jre7\lib\security\java.policy"? E cosa devo metterci? Ho provato a mettere temporaneamente
    codice:
    permission java.security.AllPermission;
    ma non funziona lo stesso. E se provo a togliere il securitmanager dal server, quello nno mi da problemi, ma è il client a darmi problemi perchè non l'ho messo.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.