2013-06-05 43 views
3

我有一個JacORB 3.2的問題,因爲它似乎沒有讀取orb.properties文件,尤其是ORBInitRef.NameService屬性。JacORB 3.2 NameService(ns)似乎不讀取「orb.properties」文件

如第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文件是完全一樣的。請看看包含名稱服務的引用(IOR)的文件的URI:

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

的問題是,當我嘗試啓動名稱服務不帶任何參數(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的初始引用。

NamingContextExt nc = NamingContextExtHelper.narrow(orb.resolve_initial_references("NameService")); 

上一個Java代碼返回一個有效的對象。這對我來說沒有任何意義。 爲什麼當我在Linux上時,NameService嘗試將它的IOR寫入像C:\ NS_Ref這樣的隨機文件中?

有什麼想法?

回答

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的電話將呼叫JacORBs bin目錄中的jaco腳本。激活文件末尾的詳細內容,然後再次啓動ns,看看哪個jrejacorb.home確實被使用。尋找配置。刪除你不需要的所有其他配置。

重試。

1

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配置文件嗎?