Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Ausführen einer Beispiel-RMI-Anwendung

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

Sie verwenden einen Sicherheitsmanager und haben diese Berechtigung in Ihrer .policy-Datei nicht erteilt.

-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

Mehrere Probleme dort:

  • a file:codebase wird nicht funktionieren, es sei denn, es gibt einen freigegebenen Speicherort an, der unter diesem Namen für den Client und die Registrierung sichtbar ist. Das sieht nicht so aus.

  • Sie müssen überprüfen, ob dies der richtige Name für die Richtliniendatei ist

  • Sie brauchen nicht einmal einen Sicherheitsmanager oder eine Richtlinie auf dem Server, es sei denn, der Client legt seine eigene Codebasis fest und stellt Ihnen Klassen zur Verfügung. Das passiert in diesem Beispiel nicht.

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

Überprüfen Sie diesen Namen noch einmal.

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

Natürlich hast du es getan. Sie haben der JVM einen Compiler-Befehl gegeben. Verwenden Sie den im Tutorial bereitgestellten Befehl. Sie benennen keine .java-Dateien für die JVM.

Sie hätten stattdessen Ihre Arbeit anhand des Tutorials überprüfen sollen. Sie haben das Tutorial an mindestens zwei Stellen falsch gelesen.

Ich würde auch fragen, ob Sie das Codebase-Feature überhaupt wirklich brauchen. Ich würde damit beginnen, es und die Sicherheitsmanager insgesamt zu entfernen und es einfach ohne sie zum Laufen zu bringen. Für ein erstes RMI-Projekt ist das zu kompliziert.