3

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 之类的随机文件中?

任何想法?

4

2 回答 2

2

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

  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

就像你已经做过的那样。如果在将其用作 cmdline 选项时它的行为有所不同,请参阅 2。

第二。JacORB 它的配置文件不是特定于操作系统的——它混合了 Linux 和 Windows 风格。不要依赖那个。

您的调用ns将调用jacoJacORBsbin目录中的脚本。激活文件末尾的详细信息,然后重新开始ns,看看哪些jrejacorb.home真正被使用。寻找配置。删除您不需要的所有其他配置。

重试。

于 2013-06-10T21:27:32.287 回答
1

This

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

looks fine, but shouldn't that

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

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

And this

c:/NS_Ref

is strange on Linux; that looks very windowzy to me; are you sure you've not mixed Win and Linux config files?

于 2013-06-06T13:58:07.330 回答