我对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/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运行之后,所有其他对象都可以正确和自动地解析NameService的初始引用。
NamingContextExt nc = NamingContextExtHelper.narrow(orb.resolve_initial_references("NameService"));前面的Java代码返回一个有效的对象。这对我来说没有任何意义。为什么当我在Linux上时,NameService会尝试在C:\NS_Ref这样的随机文件中写入IOR呢?
有什么想法吗?
发布于 2013-06-10 21:27:32
我想你在你的问题中混淆了一些不同的东西。
优先。启动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和JacORB风格。别指望这个。
对ns的调用将调用JacORBs bin目录中的jaco脚本。激活文件末尾的详细内容,然后再次启动ns,查看实际使用了哪些jre和jacorb.home。找人倾诉。除去你不需要的所有其他吐露。
再试一次。
发布于 2013-06-06 13:58:07
这
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配置文件吗?
https://stackoverflow.com/questions/16949324
复制相似问题