5 Stimmen

Fehler beim Versuch, eine Verbindung zum Jacorb-Namensgebungsdienst herzustellen

Ich hoffe, dass ich bei diesem seltsamen Problem etwas Hilfe bekomme. Wir verwenden den Jacorb-Nameserver, und ich habe einen einfachen Client, mit dem ich versuche, eine Verbindung herzustellen und großartiges CORBA-Voodoo zu machen. Der Nameserver läuft, aber wenn ich versuche, meine Java-Anwendung zu starten, erhalte ich eine "Connection failure" error (org.omg.CORBA.COMM_FAILURE, minor code 201, "caused by java.net.ConnectionException: Connection refused: connect") .

Jetzt kommt der seltsame Teil. Die Fehlermeldung besagt, dass versucht wird, eine Verbindung über den Standard-Port 900 herzustellen, aber ich übergebe ein Argument, um zu versuchen, die Portnummer des Namensdienstes zu überschreiben, damit sie mit der vom Namenserver verwendeten übereinstimmt. Mein Java-Befehl sieht folgendermaßen aus:

java -classpath . HelloClient -Djava.endorsed.dirs="bla bla bla" <br>
-Dorg.omg.CORBA.ORBClass=org.jacorb.orb.ORB 
-Dorg.omg.CORBA.ORBSingletonClass=org.jacorb.orb.ORBSingleton
-DORBInitRef.NameService=corbaloc::localhost:2809/StandardNS/NameServer-POA/_root

Ich habe auch die Parameter ohne das erste große D ausprobiert (ich habe beide Varianten gesehen und kenne den Unterschied nicht).

Wenn ich nun Folgendes eingebe -ORBInitialPort 2809 dann scheint der Client zwar zu versuchen, eine Verbindung herzustellen, aber dann erhalte ich eine corba.OBJECT_NOT_EXIST Fehler.

Ich könnte jede Hilfe oder jeden Rat gebrauchen, den jemand hat.

3voto

jim Punkte 1432

Verbindung abgelehnt. Das klingt nach einem Problem mit der Firewall oder einem nicht laufenden Programm. Versuchen Sie eine telnet <machine> 2809 . Sie sollten ein "Verbunden mit" erhalten und keine Ablehnung, wenn alles richtig läuft/aktiviert ist.

Da ich einen UNIX-Client verwende, sind die Pfade im UNIX-Stil gehalten.

  1. jacORB richtig installiert ? z.B. den Nameservice-Eintrag aus der Datei orb.properties-Datei (in ${JAVA_HOME}/jre/lib/ Ich verwende " ORBInitRef.NameService=corbaloc::localhost:2809/NameServer " da "NameServer" auf dem Produktionsnamenserver verwendet wird und nicht die andere Zeichenfolge von "Standard...."

    Die anderen Änderungen in den Eigenschaftsdateien sind die Einstellung der Pfade auf UNIX Stil (d.h. e: \NS_Ref -> /tmp/NS_Ref) jacorb.naming.ior_filename=/tmp/NS_Ref

1a. Die Einstellung von http:// in der Eigenschaftsdatei scheint nichts zu bewirken in Bezug auf die Auflösung auf der Client-Seite.

1b. HINWEIS: beginnen Sie ns mit: ns -DOAPort=2809

Das Protokoll wird angezeigt: 2010-05-27 10:00:47.777 FINE Created socket listener on 0.0.0.0/0.0.0.0:2809 2010-05-27 10:00:47.777 FINE Using port 2809 Laufen: $ lsof | grep 2809 java 27529 jbsymolo 15u IPv6 693300 TCP *:2809 (LISTEN) $ lsof -Pnl +M -i6 COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME Naming_Se 9678 1000 7u IPv6 45779 TCP *:51148 (LISTEN) java 27959 1000 15u IPv6 696092 TCP *:2809 (LISTEN)

Läuft nicht: (zeigt nichts an)

  1. ns wird beim Start protokollieren, woher es die Eigenschaften liest, und es sollte nicht keine Fehler auslösen. Wenn dies der Fall ist, haben Ihre Eigenschaftsdateien Probleme.

  2. VM-Argumente. Das -D wird verwendet, um Systemeigenschaften zu setzen. Jeder Java-Code kann dann auf jede so definierte Eigenschaft über System.getProperty() zugreifen. Auch wenn ich auch das "non-D" gesehen habe, habe ich das D verwendet.

    -DORBInitRef.NameService=corbaloc::localhost:2809/NameService -Dorg.omg.CORBA.ORBClass=org.jacorb.orb.ORB -Dorg.omg.CORBA.ORBSingletonClass=org.jacorb.orb.ORBSingleton

Wenn ich den Client in Eclipse ausführe, sehe ich folgendes in der Konsole:

May 27, 2010 10:01:06 AM org.jacorb.config.JacORBConfiguration init
INFO: base configuration loaded from file /usr/lib/java/jdk1.6.0_18/jre/lib/orb.properties
...
2010-05-27 10:01:09.836 FINE Trying to connect to 127.0.0.1:2809 with timeout=90000.
2010-05-27 10:01:09.844 INFO Connected to 127.0.0.1:2809 from local port 45745
2010-05-27 10:01:09.846 FINE wrote 12 bytes to 127.0.0.1:2809
...

Überspringen von viel anderem Lese-/Schreibverkehr

1voto

bshields Punkte 3543

Ich kann nicht sicher sein, ohne den Rest des Codes zu sehen, aber ich bin ziemlich sicher, dass Sie die InitRef-Zeichenfolge ändern müssen, um zu sein:

-DORBInitRef.NameService=corbaloc::localhost:2809

Wenn Ihr Client eine Verbindung herstellt, sollten Sie dadurch den Root-Namenskontext für den Namensdienst erhalten und können dann den NameContext-Baum durchlaufen, um zu Ihrem gewünschten Serverobjekt zu gelangen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X