Ошибка при попытке подключиться к сервису именования Jacorb
Я надеюсь получить помощь с этой странной проблемой. У нас работает сервер имен 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 ответа
В соединении отказано. Это звучит как брандмауэр / программа не работает проблема. попробуй telnet <machine> 2809
, Вы должны получить "Подключен к", а не отказ, если все работает / включен правильно.
Я работаю на клиенте UNIX, поэтому пути используют стиль UNIX.
jacORB установлен правильно? например, получить запись службы имен из файла orb.properties (в $ {JAVA_HOME} / jre / lib / I use "
ORBInitRef.NameService=corbaloc::localhost:2809/NameServer
"как"NameServer"используется на производственном сервере имен, а не в другой строке"Standard...."Другие изменения в файлах свойств устанавливают пути в стиле UNIX (например, e: \ NS_Ref -> / tmp / NS_Ref)
jacorb.naming.ior_filename=/tmp/NS_Ref
1a. Установка http:// в файле свойств, похоже, ничего не сделала в отношении разрешения на стороне клиента.
1б. ПРИМЕЧАНИЕ: начните с: 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)
Не работает: (ничего не показывает)
ns при запуске регистрирует, откуда он читает свойства, и не должен выдавать никаких ошибок. Если это так, у ваших файлов свойств есть проблемы.
Аргументы ВМ. -D используется для установки системных свойств. Любой код Java может затем получить доступ к любому свойству, определенному с помощью System.getProperty(). Несмотря на то, что я также видел "не D", я использовал D.
-DORBInitRef.NameService = corbaloc:: localhost: 2809 / NameService -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
...
Пропуск много другого чтения / записи трафика
Я не могу быть уверен, не увидев остальную часть кода, но я почти уверен, что вам нужно изменить строку InitRef на:
-DORBInitRef.NameService=corbaloc::localhost:2809
Когда ваш клиент подключается, это должно дать вам корневой контекст именования для службы имен, а затем вы можете пройти по дереву NameContext, чтобы добраться до нужного объекта сервера.