Похоже, что JacORB 3.2 NameService (ns) не читает файл "orb.properties"

У меня проблема с JacORB 3.2, так как кажется, что он не читает orb.properties файл, и особенно ORBInitRef.NameService имущество.

Как указано в документации к главе 3.1, JacORB автоматически ищет файл orb.properties в трех местах: "java.home"/lib каталог, "user.home" каталог и внутри пути к классам.

Это доказательство того, что я не совсем пьян:

Java-команда:

System.out.println(System.getProperty("java.home"));
System.out.println(System.getProperty("user.home"));

Выход:

/usr/lib/jvm/jdk1.7.0/jre
/home/followthemedia

Команда Bash:

ls /usr/lib/jvm/jdk1.7.0/jre/lib | grep orb.properties ; ls /home/followthemedia | grep orb.properties

Выход:

jacorb.properties
orb.properties
jacorb.properties
orb.properties

Эти четыре .properties файл точно такой же. Пожалуйста, посмотрите на URI файла, который содержит ссылку (IOR) на NameService:

ORBInitRef.NameService=file:/tmp/CORBA/NS_Ref

Проблема в том, что, когда я пытаюсь запустить NameService без какого-либо параметра (ns), я получаю следующие сообщения об ошибках:

giu 05, 2013 9:56:51 PM org.jacorb.naming.NameServer main
SEVERE: unexpected exception
java.io.FileNotFoundException: c:/NS_Ref (No such file or directory)
    at java.io.FileOutputStream.open(Native Method)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:212)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:104)
    at org.jacorb.naming.NameServer.main(NameServer.java:320)

java.lang.RuntimeException: c:/NS_Ref (No such file or directory)
    at org.jacorb.naming.NameServer.main(NameServer.java:335)

Конечно, если я явно передаю URI через консоль, все идет хорошо

ns -Djacorb.naming.ior_filename=/tmp/CORBA/NS_Ref

Очень странно то, что после запуска NameService КАЖДЫЙ ДРУГОЙ ОБЪЕКТ может правильно и автоматически разрешить начальную ссылку на NameService.

NamingContextExt nc = NamingContextExtHelper.narrow(orb.resolve_initial_references("NameService"));

Предыдущий код Java возвращает допустимый объект. Это не имеет никакого смысла для меня. И почему NameService пытается записать свой IOR в случайный файл, такой как C:\NS_Ref, пока я нахожусь в Linux?

Любая идея?

2 ответа

Решение

Я думаю, что вы перепутали несколько разных вещей в своем вопросе.

  1. Расположение IOR NS
  2. Возможность читать и использовать этот IOR другими программами

Первый. На запуск NamingService не влияет опция ORBInitRef.NameService или любой связанный параметр командной строки. Если вы хотите, чтобы NamingService сбрасывал свой IOR в файл, используйте

# The file where the name server drops its IOR
jacorb.naming.ior_filename=file:///tmp/CORBA/NS_Ref

как вы уже сделали. Если при использовании в качестве параметра cmdline это ведет себя иначе, см. 2.

Во-вторых. JacORB его конфигурационные файлы не являются специфическими для ОС - существует сочетание стиля Linux и Windows. Не надейся на это.

Ваш звонок в ns позвоню jaco сценарий в JacORBs bin каталог. Активируйте многословный материал в конце файла, затем запустите ns еще раз и посмотрим, какие jre а также jacorb.home действительно используются. Ищите конфиги. Удалите ВСЕ другие конфиги, которые вам не нужны.

Повторите попытку.

Это

ns -Djacorb.naming.ior_filename=/tmp/CORBA/NS_Ref

выглядит хорошо, но разве не так

ORBInitRef.NameService=file:/tmp/CORBA/NS_Ref

читать file:///tmp/CORBA/NS_Ref?

И это

c:/NS_Ref

странно на Linux; это выглядит очень замкнутым для меня; Вы уверены, что не смешали файлы конфигурации Win и Linux?

Другие вопросы по тегам