Java Insel - RMI Beispiel

Status
Nicht offen für weitere Antworten.

number8

Aktives Mitglied
(bezieht sich alles auf das Bsp aus dem bekannten (open)book)
Hallo.
Soweit so gut. Ich arbeite das Kapitel "RMI" durch. Das Bsp (der Addierer) sieht auch ganz einfach aus. Schnell ist es eingetippt. Die rmiregistry ist gestartet (reicht doch auch ein Doppelklick auf die .exe?) und dann ein Rechtsklick in Netbeans auf die Server.java und "Run File" auswählen. Da fängt der Ärger auch schon an. Es hagelt nur noch Exceptions. Was mache ich falsch?
 

JPKI

Top Contributor
Ein paar dieser Exception dokumentieren, den auslösenden Code beifügen und dir kann mit Sicherheit geholfen werden.
 

egrath

Aktives Mitglied
Hallo,

ich habe ein ähnliches Problem - bin auch gerade am Durcharbeiten des Kapitels über RMI aus der Javainsel und stosse dabei beim starten des Servers auf folgende Exception:

Code:
Exception in thread "main" java.rmi.UnexpectedException: undeclared checked exception; nested exception is: 
        java.lang.ClassNotFoundException: Could not find class (Adder) at codebase ()
        at sun.rmi.registry.RegistryImpl_Stub.bind(Unknown Source)
        at Server.main(Server.java:18)

Soweit ich aus der Exception herauslese, kann die Klasse "Adder", welche das Interface für die Remotemethode darstellt nicht von der Codebase laden. Da diese Klasse allerdings im gleichen Verzeichnis wie der Server liegt, sollte doch zuerst der Classpath greifen und erst anschliessend eine eventuell gesetzte Codebase danach abgesucht werden - auch ein setzen der Codebase property auf den aktuellen Pfad schafft keine Abhilfe.

Untenstehend meine Implementierung des ganzen:

Server:
Code:
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.RemoteServer;
import java.rmi.server.UnicastRemoteObject;
import java.rmi.RemoteException;

public class Server
{
        public static void main( String[] args )
        throws Exception
        {
                AdderImpl adder = new AdderImpl();

                Adder stub = ( Adder ) UnicastRemoteObject.exportObject( adder, 0 );
                RemoteServer.setLog( System.out );

                Registry registry = LocateRegistry.getRegistry( "localhost", 1099 );
                registry.bind( "Adder", stub );

                System.out.println( "Adder angemeldet" );
        }
}

Adder:
Code:
import java.rmi.Remote;
import java.rmi.RemoteException;

public interface Adder
extends Remote
{
        int add( int x, int y )
        throws RemoteException;
}

AdderImpl:
Code:
public class AdderImpl
implements Adder
{
        public int add( int x, int y )
        {
                return x + y;
        }
}

Client:
Code:
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.RemoteException;
import java.rmi.NotBoundException;

public class Client
{
        public static void main( String[] args )
        throws RemoteException, NotBoundException
        {
                Registry registry = LocateRegistry.getRegistry();
                Adder adder = ( Adder ) registry.lookup( "Adder" );

                System.out.println( adder.add( 3, 4 ));
        }
}

Danke und Grüsse,
Egon
 

egrath

Aktives Mitglied
Hallo,

so nach vielen etlichen Versuchen herauszufinden warum diese Exceptions geworfen werden bin ich einen kleinen Schritt weiter gekommen:

Das Problem tritt nur dann auf, wenn ich die Registry manuell starte und nicht vom Server erzeugen lasse.

Code:
Registry registry = LocateRegistry.getRegistry( "localhost", 1099 );

ersetzen durch:

Code:
Registry registry = LocateRegistry.createRegistry( 1099 );

Damit ist das Problem erstmal behoben - die Frage nach dem Warum stellt sich allerdings dadurch immer noch.

Grüsse,
Egon
 

JPKI

Top Contributor
Hm. Der Code scheint so ganz in Ordnung zu sein. Erklär' mal, wie du den Remoteserver startest.
 

egrath

Aktives Mitglied
Hallo JPKI,

Die RMI Registry starte ich (wenn manuell) dann mittels "rmiregistry &".

Remote Server: "java egrath.test.Server"

Habe auch schon versuche im Bereich RMISecurityManager angestellt da lt. J2SE Dokumentation der RMI Class Loader keine Klassen lädt wenn kein Security Manager gesetzt ist. Aber auch mit Security Manager und einer vollkommen offenen Policy blieb das Problem bestehen.

Hier noch ein paar Infos über meine SW Konstellation:

VM: Sun HotSpot 1.6.0-b105
O/S: Problem tritt unter Linux und Windows auf.

Grüsse, Egon
 

JPKI

Top Contributor
Hm. Als ich die RMIREGISTRY manuell starten wollte, hat's auch nicht geklappt. Also hab ich'n Bissel rumgeforscht: Keine Ahung warum, aber meine Firewall (Zone Alarm, Windows) hat RMIREGISTRY geblockt, d.h. es ist gelaufen, aber hat nichts bewirkt.
Schau mal, ob deine Firewall das Programm eventuell blockt.
 

egrath

Aktives Mitglied
Hallo,

an der Firewall liegts nicht, da is die Policy auf all accept:

Code:
root@vusrddev01:/root >iptables --list
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
root@vusrddev01:/root >

Mal noch etwas nachforschen und nachlesen, vielleicht find ich noch was. Das kanns ja nicht sein so ;-)

Grüsse,
Egon
 

egrath

Aktives Mitglied
JPKI hat gesagt.:
egrath hat gesagt.:
an der Firewall liegts nicht, da is die Policy auf all accept
Lol, was bringt die Firewall dann :wink: ?

Wenn man bei RedHat die Firewall deaktiviert wird diese zwar im Kernel aktiviert allerdings eben mit einer leeren Policy und default auf Accept. Ist bei der Maschine aber egal da diese ohnehin nur im LAN steht.

Grüsse,
Egon
 

egrath

Aktives Mitglied
Hallo,

so ich habs jetzt herausgefunden:

1.) Warum es funktioniert wenn man die Registry mittels createRegistry erzeugen lässt:

Die RMI Registry wird in diesem Fall vom gleichen Basisverzeichnis gestartet in deren Unterverzeichnis sich dann die vom Server benötigten Klassen liegen. => Die klassen können von der RMI Registry geladen werden.

2.) Warum es beim händischen starten nicht funktioniert:

Die RMI Registry kann die Klassen nicht finden, wenn diese nicht von jenem Basisverzeichnis aus zu finden sind in welcher die Registry gestartet wurde.

3.) Wie es funktioniert:

Die RMI Registry händisch starten. Dem Server als Property mitgeben von wo die RMI Registry ihre Klassen laden soll:

Beispiel:
Code:
/home/giratheg/prj/RMI #java -Djava.rmi.server.codebase=file:/home/giratheg/prj/RMI/ egrath.test.Server

Und schon funktionierts einwandfrei - war eine schwere geburt aber ich bin erleichtert dass es nun geht.

Grüsse,
Egon
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
razwed4ik zum Beispiel aus Java Insel Buch Java Basics - Anfänger-Themen 7
JordenJost Java ist auch eine Insel für Anfänger Java Basics - Anfänger-Themen 2
C Methoden Java ist auch eine Insel Listing 2.40 Recursion Java Basics - Anfänger-Themen 7
M Java Insel Aufgaben von der DVD gesucht Java Basics - Anfänger-Themen 2
F Erste Schritte Java ist auch eine Insel kaufen? Java Basics - Anfänger-Themen 2
D Türme von Hanoi in "Java ist auch eine Insel" Java Basics - Anfänger-Themen 4
DaniSahne96 Frage zu Java ist auch eine Insel Java Basics - Anfänger-Themen 12
DaniSahne96 Codebeispiel Verständnissproblem Java Insel Java Basics - Anfänger-Themen 19
J Geldberechner(aus Java ist auch eine Insel) Java Basics - Anfänger-Themen 6
G Erste Schritte JAVA ist auch eine Insel Java Basics - Anfänger-Themen 7
Hindi93 Java is auch ne Insel CD Java Basics - Anfänger-Themen 8
T Frage aus dem Buch JAVA ist auch eine Insel Java Basics - Anfänger-Themen 11
S Codebeispiel aus Java ist auch eine Insel. Java Basics - Anfänger-Themen 2
N Java Insel 6 lesen oder auf 7 warten ? Java Basics - Anfänger-Themen 11
T Java ist auch eine Insel: Beispielprogramm fehlerhaft? Java Basics - Anfänger-Themen 2
J Probleme mit drucken aus Java Java Basics - Anfänger-Themen 3
Gokul Java chart library suggestion for web application? Java Basics - Anfänger-Themen 2
D wie kann ich gcc aus einer .java datei heraus aufrufen? Java Basics - Anfänger-Themen 2
S Text Formatierung in Java Java Basics - Anfänger-Themen 2
B Erste Schritte yaml parsen in Java Java Basics - Anfänger-Themen 19
C Methoden Umlaute in Java Java Basics - Anfänger-Themen 18
W Java-PRogramm liest als EXE-File Nicht USB, jedoch aus NetBeans Java Basics - Anfänger-Themen 45
W Methoden java map ersatz für c++map Java Basics - Anfänger-Themen 3
M Erste Schritte Java Primzahltester Java Basics - Anfänger-Themen 4
A csv Reader für Java? Java Basics - Anfänger-Themen 27
K Java - Enums Java Basics - Anfänger-Themen 30
tomzen Java Unterstützung für exel dateien installieren. Java Basics - Anfänger-Themen 2
Rookar java.lang.NoClassDefFoundError: org/json/JSONException Java Basics - Anfänger-Themen 2
Rookar Mit Button andere java öffnen Java Basics - Anfänger-Themen 4
F Java Object to Hashmap ? Java Basics - Anfänger-Themen 6
I Backend in Java und Ansicht von Dateien in statische HTML Seiten? Java Basics - Anfänger-Themen 15
R Input/Output Verwendung des Euro-Zeichens in Java Java Basics - Anfänger-Themen 7
I Push Nachrichten von JAVA EE App an Mobile App Java Basics - Anfänger-Themen 3
H .java Dateien in Eclipse einbinden und ausführen Java Basics - Anfänger-Themen 1
onlyxlia Schlüsselworte Was meint man mit "einen Typ" in Java erstellen? Java Basics - Anfänger-Themen 2
O Java Kara geschweifte Klammern Java Basics - Anfänger-Themen 2
G Mausrad logitech kann links und rechts klick wie in java abragen. Java Basics - Anfänger-Themen 15
XWing Java Klssenproblem Java Basics - Anfänger-Themen 4
R Umgebungsvariable java -cp gibt immer Java-Hilfe... Java Basics - Anfänger-Themen 3
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
F TableModelListener: java.lang.ArrayIndexOutOfBoundsException: 132 Java Basics - Anfänger-Themen 3
G Java 8 - Support-Ende Java Basics - Anfänger-Themen 7
T Java Weihnachtsbaum + Rahmen Java Basics - Anfänger-Themen 1
N Will mit Java anfangen Java Basics - Anfänger-Themen 13
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
M Java Iterator Verständnisfrage Java Basics - Anfänger-Themen 6
M Java Mail Programm Java Basics - Anfänger-Themen 4
Sniper1000 Java 391 für Windows Java Basics - Anfänger-Themen 37
G Java long- in int-Variable umwandeln Java Basics - Anfänger-Themen 6
JaZuDemNo Java im Studium Java Basics - Anfänger-Themen 7
E Java Programm zur anzeige, ob Winter- oder Sommerzeit herrscht Java Basics - Anfänger-Themen 62
I QR code in Java selber generieren Java Basics - Anfänger-Themen 5
V Java-Ausnahmebehandlung: Behandlung geprüfter Ausnahmen Java Basics - Anfänger-Themen 1
krgewb Java Streams Java Basics - Anfänger-Themen 10
A Überwältigt von der komplexen Java Welt Java Basics - Anfänger-Themen 29
O Mehrfachvererbung auf Spezifikations- und Implementierungsebene in Java. Interfaces Java Basics - Anfänger-Themen 19
John_Sace Homogene Realisierung von Generics in Java ? Java Basics - Anfänger-Themen 19
P Meldung aus Java-Klasse in Thread an aufrufende Klasse Java Basics - Anfänger-Themen 1
R mit Java API arbeiten Java Basics - Anfänger-Themen 9
P JDK installieren Probleme bei der Java-Installation Java Basics - Anfänger-Themen 8
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
Timo12345 JNLP File mit Java öffnen Java Basics - Anfänger-Themen 2
S Video Editierung mit Java.._ Java Basics - Anfänger-Themen 2
F Einstelungen in Java - CursorBlinkRate Java Basics - Anfänger-Themen 10
A PHP $_POST["name"] in Java Java Basics - Anfänger-Themen 3
vivansai21 Is there a oneliner to create a SortedSet filled with one or multiple elements in Java? Java Basics - Anfänger-Themen 9
Athro-Hiro Weißes Bild in Java erstellen Java Basics - Anfänger-Themen 3
Arjunreddy Can someone please tell me how to use a debugger in BlueJ(a Java environment) Java Basics - Anfänger-Themen 1
M Java assoziationen (UML) Java Basics - Anfänger-Themen 8
H Excel-Tabellen mit Java erstellen Java Basics - Anfänger-Themen 4
Simon16 Java ArrayListe von einer Klasse sortieren Java Basics - Anfänger-Themen 2
P Wie kann ich in meinem Java Programm etwas dauerhaft speichern? Java Basics - Anfänger-Themen 5
H Nutzt Eclipse alle CPU-Threads beim Ausführen von Java-Programmen? Java Basics - Anfänger-Themen 4
xXGrowGuruXx Java einstieg, leichte sache 0 verstanden Java Basics - Anfänger-Themen 7
A java.sql.SQLException: Data type mismatch. Java Basics - Anfänger-Themen 1
H Java-Programm zur Ausgabe von Zuständen Java Basics - Anfänger-Themen 80
N Java Spiel Figur auf dem Hintergrundbild bewegen. Java Basics - Anfänger-Themen 11
G Kann Java-Programm nicht als jar aufrufen, auch als EXE nicht Java Basics - Anfänger-Themen 19
N Java Taschenrechner hat Jemand vlt einen Tipp dafür wie ich jetzt die buttons verbinden kann und das Ergebnis auf dem textfield anzeigen lassen kann Java Basics - Anfänger-Themen 13
A Lerngruppe Java Java Basics - Anfänger-Themen 2
G Help me in the Java Program Java Basics - Anfänger-Themen 2
L Java- Vererbung Java Basics - Anfänger-Themen 4
LimDul Suche Java Stream Tutorial Java Basics - Anfänger-Themen 2
_so_far_away_ Ich möchte Java lernen Java Basics - Anfänger-Themen 11
benny1993 Java Programm erstellen für ein Fußball-Turnier Java Basics - Anfänger-Themen 3
M Datentypen While-Schleife eine Java Methode erstellen Java Basics - Anfänger-Themen 3
V Bild per Java Script austauschen Java Basics - Anfänger-Themen 7
MoxMorris this Keyword in Java Java Basics - Anfänger-Themen 14
D Wie kann man in Java nach Arrays auf Duplikate prüfen Java Basics - Anfänger-Themen 12
wolei JAVA Zeitdifferenz feststellen. Java Basics - Anfänger-Themen 4
DiyarcanZeren Rekursion in Java Java Basics - Anfänger-Themen 5
wolei Java generic interface in a generic class Java Basics - Anfänger-Themen 6
monsterherz Ablauf der Erstellung eines Java Programmes Java Basics - Anfänger-Themen 17
monsterherz Circle.java:5: error: <identifier> expected Java Basics - Anfänger-Themen 2
julian-fr Wie kann ich am besten Java lernen? Java Basics - Anfänger-Themen 17
A Java-Properties und -RessourceBundles Java Basics - Anfänger-Themen 5
lrnz22 Java-Basics-Aufgabe Java Basics - Anfänger-Themen 8
R Java kann nicht installiert werden Java Basics - Anfänger-Themen 8
marcelnedza Finde meinen Fehler in einer Methode nicht, Java Karol Java Basics - Anfänger-Themen 15
G In ein java Dokument Ton einbinden Java Basics - Anfänger-Themen 1

Ähnliche Java Themen


Oben