到http://www.jacorb.org/download.html下載JacORB3.0Beta。
下面開發一個簡單的應用。
首先需要定義IDL文件。例如:
在Eclipse裡面,可以通過下面的XML配置執行ANT Build編譯IDL文件。
[html]對於struct,生成3個文件。以Author為例,
Author.java
AuthorHelper.java -> 用來從Any對象中extract出Author對象/向Any對象中insert Author對象
AuthorHolder.java -> 用於輸出參數
如果定義了sequence,還會得到*ListHelper.java和*ListHolder.java文件。
對於interface,除了上面的3個文件,還生成3個文件。以BookQuery為例:
BookQueryOperations.java ->定義我們的interface
BookQueryPOA.java ->BookQuery服務的提供者(Servant),我們的代碼需要繼承這個類
BookQueryPOATie.java ->如果我們的服務實現類沒有沒有繼承BookQueryPOA類,直接實現BookQueryOperations接口,需要通過BookQueryPOATie來轉換為一個Servant對象。
接下來可以分別進行Server端和Client端的編碼。
Server
Server端的一般步驟如下:
1)新建1個類,繼承自*POA類。在其中實現所有提供的接口。
接下來在Server端的main方法中,
2)調用ORB.init()這個靜態方法,初始化ORB並得到一個ORB對象。
3)在ORB對象上調用resolve_initial_references("RootPOA"))方法,獲得root POA,然後激活它。或者創建1個新的POA,激活這個POA。
4) 在ORB對象上調用resolve_initial_references("NameService"))方法,獲得NameService的引用。
5)創建我們的服務提供對象,向NameService注冊,注冊時提供一個服務名。
6)調用ORB對象的run方法。
Client
Client端的一般步驟如下:
在Client端的main方法中,
1)調用ORB.init()這個靜態方法,初始化ORB並得到一個ORB對象。
2) 在ORB對象上調用resolve_initial_references("NameService"))方法,獲得NameService的引用。
3)提供服務名,向NameService查詢並得到服務提供者的代理。
4)調用服務。
Any對象
對於Any對象,首先使用ORB對象的create_any方法生成1個Any對象,然後可以使用*Helper類的extract/insert方法抽取/插入一個對象。
可以使用Any對象的type方法獲得這個Any對象中存放的對象的類型。