Oracle
 sql >> Base de données >  >> RDS >> Oracle

Exécution d'un exemple d'application RMI

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

Vous utilisez un gestionnaire de sécurité et vous n'avez pas accordé cette autorisation dans votre fichier .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

Plusieurs problèmes ici :

  • un fichier :codebase ne fonctionnera que s'il spécifie un emplacement partagé visible par ce nom pour le client et le registre. Cela ne ressemble pas à l'un d'entre eux.

  • vous devez vérifier s'il s'agit du nom correct du fichier de stratégie

  • vous n'avez même pas besoin d'un gestionnaire de sécurité ou d'une politique sur le serveur, à moins que le client ne définisse sa propre base de code et ne vous fournisse des classes. Cela ne se produit pas dans cet exemple.

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

Revérifiez ce nom.

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

Bien sûr que vous avez fait. Vous avez donné une commande de compilateur à la JVM. Utilisez la commande fournie dans le didacticiel. Vous ne nommez pas les fichiers .java à la JVM.

Vous auriez dû revérifier votre travail par rapport au didacticiel à la place. Vous avez mal lu le didacticiel à au moins deux endroits.

Je me demande également si vous avez vraiment besoin de la fonctionnalité de base de code. Je commencerais par le supprimer, ainsi que les responsables de la sécurité, et je le ferais fonctionner sans eux. C'est trop compliqué pour un premier projet RMI.