2010-04-13 17 views
5

Espero obtener ayuda con este extraño problema. Estamos ejecutando el servidor de nombres de Jacorb y tengo un cliente simple que estoy usando para tratar de conectarme y hacer un increíble vudú de CORBA. El servidor de nombres se está ejecutando, pero cuando intento iniciar mi aplicación java, obtengo un "Connection failure" error (org.omg.CORBA.COMM_FAILURE, minor code 201, "caused by java.net.ConnectionException: Connection refused: connect").Error al intentar conectar con el servicio de nombres de Jacorb

Aquí está la parte extraña. El error informa que está tratando de conectarse utilizando el puerto predeterminado 900, pero estoy pasando un argumento para tratar de anular el número de puerto del servicio de nombre para que coincida con el utilizado por el servidor de nombres. Mi comando java es así:

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 

También probé los parámetros sin la primera capital D (lo he visto en ambos sentidos y no sé la diferencia).

Ahora, si puse -ORBInitialPort 2809, entonces el cliente parece intentar conectarse, pero luego aparece un error corba.OBJECT_NOT_EXIST.

Podría utilizar cualquier ayuda o consejo que alguien tenga.

+0

Vaya, ¿nadie se aventura a adivinar? Me siento decepcionado: \ – Dave

+0

¿Podría publicar su código Java donde intenta establecer una conexión con el servidor de nombres? –

Respuesta

3

Conexión rechazada. Esto suena como un firewall/programa que no está funcionando. intente con telnet <machine> 2809. Debería obtener un "Conectado a" y no un rechazo, si todo se está ejecutando/habilitado correctamente.

Me estoy ejecutando en un cliente UNIX por lo que las rutas utilizan el estilo UNIX.

  1. jacORB instalado correctamente? p.ej. obtener la entrada del servicio de nombres del archivo orb.properties (en $ {JAVA_HOME}/jre/lib/ Uso "ORBInitRef.NameService=corbaloc::localhost:2809/NameServer" como "NameServer" se usa en el servidor de nombres de producción y no en la otra cadena de "Estándar. ..."

    los otros cambios en los archivos de propiedades están estableciendo los caminos de tipo UNIX (es decir, e: \ NS_Ref ->/tmp/NS_Ref) jacorb.naming.ior_filename=/tmp/NS_Ref

1a Ajuste del HTTP. : // en el archivo de propiedades no parece hacer nada en lo que respecta a resolvin g en el lado del cliente.

1b.NOTA: se inicia ns con: ns -DOAPort=2809

registro mostrará: 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 de reproducción: $ 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)

no está en ejecución: (muestra nada)

  1. ns cuando se inicie se registrará desde donde lee las propiedades y no debería lanzar ningún error. Si lo hace, tus archivos de propiedades tienen problemas.

  2. Argumentos VM. La -D se usa para establecer las propiedades del sistema. Cualquier código Java puede luego acceder a cualquier propiedad así definida a través de System.getProperty(). A pesar de que También he visto el "no-D" que se utiliza, He estado usando el D.

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

Cuando se ejecuta el cliente en Eclipse, veo lo siguiente en la consola :

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

Omitir muchos otros tipos de tráfico de lectura/escritura

1

no puedo estar seguro sin ver el resto del código, pero estoy bastante seguro de que necesita cambiar la cadena InitRef ser:

-DORBInitRef.NameService=corbaloc::localhost:2809 

Cuando el cliente se conecta, esto debe darle el contexto de denominación raíz para el servicio de nombres y luego puede recorrer el árbol de NameContext para acceder al objeto de servidor deseado.

Cuestiones relacionadas