JacORB 3.2 名称服务 (ns) 似乎无法读取"orb.properties"文件



我有一个JacORB 3.2的问题,因为它似乎不读取orb.properties文件,特别是ORBInitRef.NameService属性。

如第3.1章的文档中所述,JacORB自动搜索orb。

在三个位置:"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

Bash命令:

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代码返回一个有效对象。这对我来说没有任何意义。为什么NameService试图将其IOR写入像C:NS_Ref这样的随机文件中,而我在Linux上?

任何想法?

我觉得你的问题混淆了一些不同的东西。

  1. NS的IOR位置
  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

就像你已经做的那样。如果使用this作为命令行选项时的行为不同,请参见2.

。JacORB的配置文件不是特定于操作系统的——它是Linux和Windows风格的混合。别指望那个。

ns的调用将调用jacob的bin目录中的jaco脚本。激活文件末尾的冗长内容,然后再次启动ns,看看真正使用的是哪个jrejacorb.home。寻找配置。删除所有不需要的其他配置。

重试。

This

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

看起来不错,但这不应该

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

read file:///tmp/CORBA/NS_Ref ?

c:/NS_Ref

在Linux上很奇怪;对我来说,这看起来很模糊;你确定你没有把Win和Linux的配置文件混在一起?

相关内容

  • 没有找到相关文章

最新更新