Ошибка при попытке соединиться со службой определения имен Jacorb

Я надеюсь получить некоторую справку с этой странной проблемой. Мы выполняем сервер имен Jacorb, и у меня есть простой клиент, который я использую, чтобы попытаться соединить и сделать удивительный вуду CORBA. Сервер имен работает, но когда я пытаюсь запустить свое приложение Java, я получаю a "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, затем клиент, действительно кажется, пытается соединиться, но затем я получаю a corba.OBJECT_NOT_EXIST ошибка.

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

5
задан Rob W 18 December 2011 в 15:12
поделиться

2 ответа

Connection Refused. Это похоже на проблему с брандмауэром/неработающей программой. Попробуйте telnet <машина> 2809. Вы должны получить сообщение "Подключено к " а не отказ, если все работает/включено правильно.

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

  1. 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:// в файле свойств, похоже, ничего не дала. в отношении разрешения на стороне клиента.

1b. ПРИМЕЧАНИЕ: запустите ns с: 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 Running: $ lsof | grep 2809 java 27529 jbsymolo 15u IPv6 693300 TCP *:2809 (LISTEN) $ lsof -Pnl +M -i6 КОМАНДА PID ПОЛЬЗОВАТЕЛЬ FD ТИП УСТРОЙСТВА РАЗМЕР УЗЛА ИМЯ 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::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
...

Пропуская много другого трафика чтения/записи

3
ответ дан 15 December 2019 в 00:55
поделиться

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

-DORBInitRef.NameService=corbaloc::localhost:2809

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

1
ответ дан 15 December 2019 в 00:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: