Ошибка при попытке подключиться к сервису именования Jacorb - PullRequest
5 голосов
/ 14 апреля 2010

Я надеюсь получить помощь в решении этой странной проблемы. У нас работает сервер имен Jacorb, и у меня есть простой клиент, который я использую, чтобы попытаться подключиться и сделать потрясающее CORBA voodoo. Сервер имен работает, но когда я пытаюсь запустить приложение Java, я получаю "Connection failure" error (org.omg.CORBA.COMM_FAILURE, minor code 201, "caused by java.net.ConnectionException: Connection refused: connect").

Вот странная часть. В сообщении об ошибке указывается, что он пытается подключиться через порт по умолчанию 900, но я передаю аргумент, чтобы попытаться переопределить номер порта службы имен, чтобы он соответствовал номеру, используемому сервером имен. Моя команда Java такая:

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

Я также попробовал параметры без первой заглавной буквы D (я видел это в обоих направлениях, и я не знаю разницы).

Теперь, если я введу -ORBInitialPort 2809, то клиент действительно пытается подключиться, но затем я получаю ошибку corba.OBJECT_NOT_EXIST.

Я мог бы использовать любую помощь или совет, который есть у любого.

Ответы [ 2 ]

3 голосов
/ 27 мая 2010

Соединение отказано. Это звучит как брандмауэр / программа не работает проблема. попробуйте telnet <machine> 2809. Вы должны получить «Подключен к» и не отказ, если все работает / включено правильно.

Я работаю на клиенте UNIX, поэтому пути используют стиль UNIX.

  1. jacORB установлен правильно? например получить запись службы имен от файл orb.properties (в $ {JAVA_HOME} / jre / lib / Я использую "ORBInitRef.NameService=corbaloc::localhost:2809/NameServer" так как «NameServer» используется на производственном сервере имен, а не на другом строка "Стандарт ...."

    Другие изменения в файлах свойств устанавливают пути к UNIX стиль (т.е. e: \ NS_Ref -> / tmp / NS_Ref) jacorb.naming.ior_filename=/tmp/NS_Ref

1a. Установка http: // в файле свойств, похоже, ничего не делает в отношении решения на стороне клиента.

1b. ПРИМЕЧАНИЕ: начните с: ns -DOAPort=2809

Журнал покажет: 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 Бег: $ 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)

Не работает: (ничего не показывает)

  1. ns при запуске будет регистрировать, откуда он читает свойства и не должен выкинь любые ошибки. Если это так, у ваших файлов свойств есть проблемы.

  2. Аргументы VM. -D используется для установки системных свойств. Любой код Java может затем получите доступ к любому свойству, определенному так через System.getProperty (). Даже если Я также видел "не D", я использовал D.

    -DORBInitRef.NameService = corbaloc :: локальный: 2809 / службы имен -Dorg.omg.CORBA.ORBClass = org.jacorb.orb.ORB -Dorg.omg.CORBA.ORBSingletonClass = org.jacorb.orb.ORBSingleton

При запуске клиента в Eclipse я вижу следующее в консоли:

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

Пропуск большого количества другого трафика чтения / записи

1 голос
/ 26 мая 2010

Я не могу быть уверен, не увидев остальную часть кода, но я почти уверен, что вам нужно изменить строку InitRef на:

-DORBInitRef.NameService=corbaloc::localhost:2809

Когда ваш клиент подключается, это должно дать вам корневой контекст именования для службы имен, а затем вы можете пройти по дереву NameContext, чтобы добраться до нужного объекта сервера.

...