JacORB 3.2 有问题,因为它似乎不读取orb.properties
文件,尤其是ORBInitRef.NameService
属性。
如第 3.1 章的文档中所述,JacORB 自动在三个位置搜索 orb.properties 文件:"java.home"/lib
目录、"user.home"
目录和类路径内部。
这是我没有完全喝醉的证据:
爪哇命令:
System.out.println(System.getProperty("java.home"));
System.out.println(System.getProperty("user.home"));
输出:
/usr/lib/jvm/jdk1.7.0/jre
/home/emanuele
重击命令:
ls /usr/lib/jvm/jdk1.7.0/jre/lib | grep orb.properties ; ls /home/emanuele | grep orb.properties
输出:
jacorb.properties
orb.properties
jacorb.properties
orb.properties
这四个.properties
文件完全相同。请查看包含 NameService 引用 (IOR) 的文件的 URI:
ORBInitRef.NameService=file:/tmp/CORBA/NS_Ref
问题是,当我尝试在没有任何参数(ns)的情况下启动 NameService 时,我收到了以下错误消息:
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 运行后,EVERY OTHER OBJECT可以正确自动地解析 NameService 的初始引用。
NamingContextExt nc = NamingContextExtHelper.narrow(orb.resolve_initial_references("NameService"));
前面的 Java 代码返回一个有效对象。这对我来说没有任何意义。为什么我在 Linux 上时 NameService 会尝试将其 IOR 写入 C:\NS_Ref 之类的随机文件中?
任何想法?