Похоже, что 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 ответа
Я думаю, что вы перепутали несколько разных вещей в своем вопросе.
- Расположение IOR NS
- Возможность читать и использовать этот 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?