**********eclipse下corba環(huán)境搭建可以參考:Corba環(huán)境搭建筆記
一抠刺、實(shí)驗(yàn)要求
自選程序邏輯學(xué)習(xí)使用jdk自帶orb和JacORB蟀给。
以哥德巴赫猜想驗(yàn)證為例即横。
二、實(shí)驗(yàn)原理
1.典型的CORBA應(yīng)用實(shí)現(xiàn)過程
2.IDL語(yǔ)言
說明性語(yǔ)言,定義組件接口年枕,不定義實(shí)現(xiàn)标捺;
語(yǔ)法上可以看成C++的一個(gè)子集懊纳,規(guī)定組件的屬性、所繼承的父類亡容、產(chǎn)生的異常嗤疯、事件和各類數(shù)據(jù)類型;
編譯器作用:將IDL映射到具體程序設(shè)計(jì)語(yǔ)言闺兢,產(chǎn)生樁代碼和框架代碼茂缚;
調(diào)用請(qǐng)求經(jīng)客戶端樁傳遞給ORB戏罢,然后轉(zhuǎn)發(fā)到服務(wù)端框架,最后到達(dá)真正要執(zhí)行請(qǐng)求的對(duì)象實(shí)現(xiàn)實(shí)例脚囊。
三龟糕、實(shí)驗(yàn)過程及代碼
1、新建一個(gè)JacORB項(xiàng)目悔耘,編寫項(xiàng)目IDL文件
(1)用IDL編寫對(duì)象規(guī)格說明:
(2)編譯IDL生成stub和skeleton:
Run---->External Tools----->IDL Compiler,控制臺(tái)輸出如下:
f5刷新讲岁,生成包含stub和skeleton的包Corba:
這里stub報(bào)錯(cuò)衬以,暫時(shí)不用管缓艳,后面再具體解決看峻。
(注,也可以使用jdk中的idlj指令互妓,idlj -fall idlName.idl生成包含stub和skeleton的包溪窒,再?gòu)?fù)制到src)。
2.Server端(以哥德巴赫猜想驗(yàn)證為例)
(1)編寫對(duì)象實(shí)現(xiàn)和服務(wù)程序
(2)編寫服務(wù)程序
通常程序員都會(huì)編寫一個(gè)名為Server.java的服務(wù)程序霉猛,服務(wù)程序創(chuàng)建伺服對(duì)象供客戶端使用珠闰。
3.編寫客戶程序
4.stub異常解決
在IDl編譯生成的stub中惜浅,ServantObjectExt和exceptionalCompletion()及exceptionalCompletion()出現(xiàn)異常伏嗜,而在API文檔中我也無法找到ServantObjectExt和exceptionalCompletion()及exceptionalCompletion()相關(guān)知識(shí),在此本人也存有疑惑承绸,為何明明是編譯IDL時(shí)它自動(dòng)生成的stub,其中方法應(yīng)該有理可據(jù)才是军熏,為何我找不到相關(guān)源方法,最后我只能根據(jù)代碼含義均践,用equals()方法暫時(shí)代替摩幔,若有知其因或有具體解決方案的,歡迎共享交流或衡。
改為
5.項(xiàng)目整體
四.運(yùn)行結(jié)果及說明
1. 啟動(dòng)windows命令行,切換到j(luò)dk安裝目錄bin文件夾下舶担,執(zhí)行tnameserv:
2.運(yùn)行Server端再運(yùn)行client端:
注:項(xiàng)目初學(xué)彬呻,如有不足之處,請(qǐng)不吝賜教。