一、 使用到的軟件
1. corba產品:OpenORB
下載地址:http://sourceforge.net/projects/openorb/
解壓后如下圖所示

2. 開發工具Eclipse 3.4.2
3. 插件:ORBStudio777
下載地址:.ftp://www.orbzone.org 用戶名稱:orbzone_downloads 密碼:orbzone_downloads
使用第三方Ftp工具或者迅雷的資源探測器登陸后進入CORBA_Utilities文件夾,下面有3個zip壓縮文件ORBStudio 775, ORBStudio776, ORBStudio777 ,我選擇了777下載。
解壓后如下圖所示
4. Javacc
下載javacc,網址:https://javacc.dev.java.net/
解壓后如下圖所示

二、安裝配置
1. 解壓OpenOrb.rar
2. 解壓ORBStudio777.zip,從ORBStudio/plugins/下面取得 ORBStudio_7.7.7.jar
的JAR包放到Eclipse/plugins下面.我用的Eclipse版本是Eclipse3.4.2。如果考入Jar包前以前Eclipse是運行
的請關閉,重新運行。
3. 運行CMD 到DOS,再到存放javacc的bin目錄,輸入 javacc -tm D:\Eclipse3.22\eclipse\ORBStudio\IDLParser.jj
4. 添加環境變量TCOO_HOME,值為OpenOrb目錄的路徑
5. 啟動eclipse
6. windows/preferences/出現如下窗口選擇ORB Studio/IDL Compiler/ 在右邊選擇OpenORB這里有5種編譯器我們使用JacORB. 打開IDL Compiler 前面的加號選擇
右邊參數IDL Command: D:\ComponentTechnology\OpenOrb\OpenORB\bin\idl2java.bat
Command Options: -d %D% %F%
這樣就配置成功了Eclipse下面的Corba開發。Eclipse的新建選擇如圖:
三、開發步驟參考
1. 在eclipse里新建項目,Project lauyout 選擇Create separate source and output folders
2.
給新項目添加Libraries,右鍵Properites--->Libraries--->Add
Library--->User Library--->User
Libraries...--->New...--->Add JARs...
找到OpenOrb\OpenORB\lib目錄下openorb_orb-1.4.0.jar,openorb_orb_tools-1.4.0.jar
OpenOrb\OpenORB\lib\endorsed目錄下openorb_orb_omg-1.4.0.jar
OpenOrb\tools\lib目錄下launcher.jar,tools-1.4.0.jar
OpenOrb\tools\lib\ext目錄下所有.jar文件
3. src上右鍵New--->Other--->CORBA Wizard--->IDL files--->Simple IDL
4. 選擇IDL文件,右鍵ORB Menu--->Compile,就自動生成文件
5.
src上右鍵New--->Other--->CORBA Wizard--->Server--->Active
object map--->Next在彈出的對話框里IDL
filename欄選擇/{projectName}/src/{IDLname}.idl
Interface欄選擇IDL文件里定義的接口名
Package欄里填寫包名
Server classname欄里填寫服務端類名
--->Next 在彈出的對話框,選中Create server class:項
6. 為生成的服務端類添加未實現的方法,并填寫方法體
7. src
上右鍵New--->Other--->CORBA Wizard--->Client--->Simple
implementation 在彈出的對話框里IDL filename欄選擇/{projectName}/src/{IDLname}.idl
Interface欄選擇IDL文件里定義的接口名
Package欄里填寫包名
Client classname欄里填寫客戶端類名
8. 在客戶端類的main方法里,取消注釋test.getORBInterface().operation1("A message in the bottle..."); 并修改傳遞的String內容
9. 運行服務端程序Server_AOM.java,然后運行客戶端程序MyServiceClientImpl.java
如果,你要將你的程序包發布到別的機器上,就要用到名稱服務,使用名稱服務,我們需要在java代碼上作些修改:
使用名稱空間的配置:
1. 找到并注釋服務端Server_AOM.java里main方法的下列代碼:
PrintWriter ps = new PrintWriter(new FileOutputStream(new File("server.ior")));
ps.println(orb.object_to_string(obj));
ps.close();
取消下列代碼(位置在上面代碼的上方)的注釋:
// org.omg.CORBA.Object ncobj = orb.resolve_initial_references("NameService");
// NamingContextExt nc = NamingContextExtHelper.narrow(ncobj);
// nc.bind(nc.to_name("MyServerObject"), obj);
修改bind方法為rebind,并引入新的類
2. 找到并注釋客戶端MyServiceClientImpl.java里main方法的下列代碼:
LineNumberReader input = new LineNumberReader(new FileReader("server.ior"));
String ior = input.readLine();
org.omg.CORBA.Object obj = orb.string_to_object(ior);
取消下列代碼(位置在上面代碼的上方)的注釋:
// org.omg.CORBA.Object ncobj = orb.resolve_initial_references("NameService");
// NamingContextExt nc = NamingContextExtHelper.narrow(ncobj);
// org.omg.CORBA.Object obj = nc.resolve_str("MyServerObject");
引入新的類
修改org.omg.CORBA.Object ncobj = orb.resolve_initial_references("NameService");里面的參數,服務端Server_AOM.java也要改。
改為"corbaloc::1.2@hostname:portNumber/NameService"
修改resolve_initial_references方法為string_to_object
修改所有異常為Exception
3. 用命令行的方式,在OpenOrb\NamingService\bin目錄下執行ins -ORBPort=portNumber
4. 帶參數 -ORBInitRef NameService=corbaloc::1.2@hostname:portNumber/NameService 運行服務端Server_AOM.java,
5. 然后運行客戶端程序MyServiceClientImpl.java,結果是一樣的。
目前為止,corba的本地、遠程開發都已經配置完畢。