2011-10-20 103 views
9

我用Java IDL運行CORBA持久對象實現的Java IDL:servertool不登記和懸掛

Java IDL: The "Hello World" Example

我跟着上面的文章

我用servertool登記持久具體程序服務器,如示例所示。 但是當我試圖註冊使用語法服務器作爲文章:

servertool > register -server PersistentServer -applicationName s1 -classpath path_to_server_class_files

我掛起並沒有做任何的事情,那麼我必須做ctrl+c到返回到正常模式

可能是什麼這個錯誤?

+0

我正在經歷同樣的問題。我從http://download.java.net/jdk7/archive/b123/docs/technotes/guides/idl/PersistentHello.zip下載示例,並開始按照readme.txt中的步驟操作,在步驟5b我有一個問題。更具體地說,如果我運行「register -server PersistentServer -applicationName s1 -classpath」。在ORB端口1050連接的servertool中,我收到一條錯誤消息:「服務器定義錯誤:未找到主類」。 – bitek

+0

我將ORBD作爲後臺進程啓動,其中orb.db位於與PersistentHello目錄相同的目錄中;我從PersistentServer類的PersistentHello目錄啓動了servertool。如果您在Google搜索字符串「Bad server definition:main class not found」,您會在幾年前看到2-3個錯誤報告。我有一些想法,如果有些事情可以嘗試,我會讓你知道的。 – bitek

+0

@AlexButum感謝您的考慮,但最後我在http://www.cse.ohio-state.edu/~gurari/course/cis888w04/cis888w04su52.html#x76-590007.6找到了我的答案。 – mojtaba

回答

1

問題是,您的Java JDK安裝路徑包含空格。

如果你的JDK被安裝到一個空格路徑中,例如「C:\ Program Files \ Java \ jdk1.7.0」,那麼你必須使用它們的絕對路徑啓動orbd和servertool(在Windows中,你必須使用short手符號即具有〜[蒂爾達]):

C:\ PROGRA〜1 \爪哇\ jdk1.7.0 \ BIN \ ORBD -ORBInitialPort 1050 -serverPollingTime 200

C:\ PROGRA〜1 \爪哇\ jdk1 .7.0 \ bin \ servertool -ORBInitialPort 1050

servertool> register -server PersistentServer -applicationName MyApp -classpath。

在Windows(如需要通過IDLJ生成的文件調整類路徑),你可以使用發現短名路徑:dir *.* /x

如果您的使用環境變量如%JAVA_HOME%等於「C:\ PROGRAM Files \ Java \ jdk1.7.0「,然後將它附加到PATH中,它將不是工作,您必須使用短符號(與蒂爾達),即」C:\ Progra〜1 \ Java \ jdk1.7.0「

提示:如果您的JDK安裝在不含空格的路徑中,例如C:\ Java \ jdk1.7.0,那麼您可以撻orbd和servertool沒有使用絕對路徑,它會工作。

+0

您正在使用哪個JDK版本爲了這 ? – ajduke

+0

Linux(Kubuntu 64bit)系統上的Windows XP SP3 32位上的最新Oracle JDK 7和OpenJDK 1.7.0_147上的最新版本。閱讀[這篇文章]的評論(http://stackoverflow.com/questions/1947864/corba-javas-servertool-does-not-allow-me-to-register-a-server-class/1995029#1995029) – bitek

0

請閱讀Running CORBA Applications完全說明

創建由編譯與「IDLJ」命令IDL文件在Java存根和框架類。

idlj -fall IDLfile.idl 

編譯源文件

javac IDLserver.java 
javac IDLclient.java 
or 

javac javac *.java IDLmodule/*.java 

啓動對象請求代理(ORB)守護進程

unix: orbd -ORBInitialPort 4321 & 
windows: start orbd -ORBInitialPort 4321 

在UNIX中,命令 'PS -e' 示出分配給該進程數ORBD。 kill命令可以用來終止進程。

在運行期間,守護進程將消息寫入子目錄orb.db中。 調用服務器 UNIX:JAVA IDLserver -ORBInitialHost本地主機-ORBInitialPort 4321個& 窗口:啓動Java IDLserver -ORBInitialHost本地主機-ORBInitialPort 4321 調用客戶端

java IDLclient -ORBInitialHost localhost -ORBInitialPort 4321 

默認ORB初始端口是端口900(僅一個根可以在solaris上啓動它)。

+0

「(只有一個root可以在Solaris上啓動它)」。其實沒有!實際上,Solaris不同於Windows和Linux,因爲它具有可以分配給用戶,進程,可執行文件或服務的'net_privaddr'特權。更安全。 – peterh