Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Java RMI

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2015
    Messaggi
    20

    Java RMI

    Salve a tutti,
    ho dei problemi in java riguardo l' RMI; praticamente ho creato un server (oggetti remoti) e un client il quale potrà invocare i metodi in remoto. Il codice sembra che sia scritto bene ma ho un problema riguardo la sicurezza ovvero accendo il server e non appena avvio il client mi esce la seguente eccezione: error unmarshalling return; nested exception is:
    java.lang.ClassNotFoundException: prova.HelloServer (no security manager: RMI class loader disabled)


    Sembra che sia un problema di sicurezza e che si possa risolvere creando un file di policy: grant {permission java.security.AllPermission }; Questo file lo passo come parametro al terminale quando avvio il client.
    Come potrei ottenere gli stessi risultati direttamente da codice e non da linea di comando? Vi spiego la mia applicazione dovrà essere portabile ovvero funzionare su altre macchine senza effettuare ulteriori modifiche.

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da rock93 Visualizza il messaggio
    java.lang.ClassNotFoundException: prova.HelloServer (no security manager: RMI class loader disabled)

    Sembra che sia un problema di sicurezza
    Io direi di no .... l'eccezione è molto chiara: ClassNotFoundException. Che vuol dire una cosa ben precisa: non trova la definizione di una classe.

    Se la applicazione è "standalone", ovvero lanciata (in qualunque modo) sulla macchina alla pari di qualsiasi altra applicazione "nativa", appunto non c'è un security manager, perché non ci sono implicazioni di sicurezza (se la avvia volutamente l'utente, si presuppone che sappia che cosa sta facendo ...)
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2015
    Messaggi
    20
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Io direi di no .... l'eccezione è molto chiara: ClassNotFoundException. Che vuol dire una cosa ben precisa: non trova la definizione di una classe.

    Se la applicazione è "standalone", ovvero lanciata (in qualunque modo) sulla macchina alla pari di qualsiasi altra applicazione "nativa", appunto non c'è un security manager, perché non ci sono implicazioni di sicurezza (se la avvia volutamente l'utente, si presuppone che sappia che cosa sta facendo ...)

    Invece no perché il progetto client è un progetto a parte se io metto ( e l'ho testato) il main del client nel server tutto funziona.... Il permesso dovrebbe essere: consenti al client di poter accedere al server (che teoricamente si potrebbe trovare anche a new York) :P

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da rock93 Visualizza il messaggio
    se io metto ( e l'ho testato) il main del client nel server tutto funziona....
    Perché evidentemente nei "binari" del server c'è il .class di quel prova.HelloServer .

    Ti ripeto che ClassNotFoundException vuol dire una sola cosa ben precisa.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2015
    Messaggi
    20
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Perché evidentemente nei "binari" del server c'è il .class di quel prova.HelloServer .

    Ti ripeto che ClassNotFoundException vuol dire una sola cosa ben precisa.
    Hai ragione Ho risolto semplicemente inserendo l'interfaccia remota nel default package sia del client e sia del server in modo che entrambi possano accedere a quel file (il server vede quali metodi dovrà implementare mentre il client li può invocare) se metto l'interfaccia in un package (che nn sia di default) esce tale errore :dh dh:

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.