2010-04-13 10 views
5

J'espère obtenir de l'aide avec ce problème étrange. Nous utilisons le serveur de noms Jacorb et j'ai un simple client que j'utilise pour essayer de me connecter et faire du super voodoo CORBA. Le serveur de noms est en cours d'exécution, mais lorsque j'essaie de démarrer mon application Java, j'obtiens un "Connection failure" error (org.omg.CORBA.COMM_FAILURE, minor code 201, "caused by java.net.ConnectionException: Connection refused: connect").Erreur lors de la tentative de connexion au service de nommage Jacorb

Voici la partie la plus étrange. L'erreur signale qu'elle essaie de se connecter en utilisant le port par défaut 900, mais je transmets un argument pour tenter de remplacer le numéro de port du service de nom pour qu'il corresponde à celui utilisé par le serveur de noms. Ma commande java est comme ceci:

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 

J'ai aussi essayé les paramètres sans la première capitale D (je l'ai vu dans les deux sens et je ne sais pas la différence).

Maintenant, si je mets -ORBInitialPort 2809, alors le client semble essayer de se connecter, mais ensuite j'obtiens une erreur corba.OBJECT_NOT_EXIST.

Je pourrais utiliser toute aide ou conseil que tout le monde a.

+0

Wow, personne n'ose même deviner? Je suis déçu: \ – Dave

+0

Pourriez-vous poster votre code Java où vous essayez d'établir une connexion avec le serveur de noms? –

Répondre

3

Connexion Refusée. Cela ressemble à un pare-feu/programme qui ne fonctionne pas. essayez un telnet <machine> 2809. Vous devriez obtenir un "Connecté à" et non un refus, si tout fonctionne correctement.

Je cours sur un client UNIX afin que les chemins utilisent le style UNIX.

  1. jacORB installé correctement? par exemple. obtenir l'entrée NameService du fichier de orb.properties (en $ {JAVA_HOME}/jre/lib/ utiliser « ORBInitRef.NameService=corbaloc::localhost:2809/NameServer » comme « NameServer » est utilisé sur le serveur de noms de production et non l'autre chaîne de « Standard. ... »

    les autres modifications dans les fichiers de propriétés sont configurer les chemins vers Unix (par exemple e: \ NS_Ref ->/tmp/NS_Ref) jacorb.naming.ior_filename=/tmp/NS_Ref

1a Réglage du http. : // dans le fichier de propriétés n'a pas l'air de faire quoi que ce soit en ce qui concerne resolvin g du côté client.

1b.REMARQUE: commencer ns avec: ns -DOAPort=2809

journal affiche: 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 Course à pied: $ 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)

Non Exécution: (montre rien)

  1. ns lors du démarrage va se connecter où il lit les propriétés et il ne devrait pas jeter des erreurs. Si c'est le cas, vos fichiers de propriétés ont des problèmes.

  2. Arguments VM. Le -D est utilisé pour définir les propriétés du système. N'importe quel code Java peut puis accéder à n'importe quelle propriété ainsi définie via System.getProperty(). Même si je ai aussi vu la "non-D" utilisé, je me sers de la D.

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

Lors de l'exécution du client dans Eclipse, je vois ce qui suit dans la console :

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 
... 

Sauter beaucoup d'autres trafics en lecture/écriture

1

Je ne peux pas être sûr sans voir le reste du code, mais je suis sûr que vous devez changer la chaîne InitRef être:

-DORBInitRef.NameService=corbaloc::localhost:2809 

Lorsque votre client se connecte, cela devrait vous donner le contexte de dénomination racine pour le service de nommage et vous pouvez ensuite traverser l'arborescence NameContext pour accéder à l'objet serveur souhaité.

Questions connexes