Oracle
 sql >> Database >  >> RDS >> Oracle

Esecuzione di un'applicazione RMI di esempio

ComputeEngine exception:
java.security.AccessControlException: access denied ("java.net.SocketPermission" "127.0.0.1:1099" "connect,resolve")

Stai utilizzando un gestore della sicurezza e non hai concesso tale autorizzazione nel tuo file .policy.

-Djava.security.manager -Djava.rmi.server.codebase=file:/Users/name/Documents/workspace/PiComputationRM/src/compute/compute.jar -Djava.security.policy=/Users/name/Documents/workspace/PiComputationRM/server.policy

Diversi problemi lì:

  • un file:codebase non funzionerà a meno che non specifichi una posizione condivisa che è visibile con quel nome al client e al registro. Questo non sembra uno di quelli.

  • è necessario verificare se questo è il nome corretto per il file della politica

  • non hai nemmeno bisogno di un gestore di sicurezza o di una politica nel server, a meno che il client non imposti la propria base di codice e ti fornisca le classi. Ciò non accade in questo esempio.

-Djava.security.policy=/Users/name/Documents/workspace/PiComputationRM/client.policy

Ricontrolla questo nome.

java -Djava.security.policy="server.policy" src/engine/ComputeEngine.java
Error: Could not find or load main class src.engine.ComputeEngine.java

Certo che l'hai fatto. Hai dato un comando del compilatore alla JVM. Utilizzare il comando fornito nel tutorial. Non dai un nome ai file .java nella JVM.

Invece avresti dovuto ricontrollare il tuo lavoro rispetto al tutorial. Hai letto male il tutorial in almeno due punti.

Mi chiederei anche se hai davvero bisogno della funzione di codebase. Inizierei rimuovendolo e i responsabili della sicurezza, del tutto, e farlo funzionare senza di loro. È una complicazione troppo grande per un primo progetto RMI.