利用動態調用方式實現分布式應用(下)
(本文轉載自軟件工程專家網 www.21cmm.com )
蘇洋
上一講介紹了利用動態調用方式實現分布式應用時, 客戶端動態調用接口(DII)和服務對象動態骨架接口(DSI)的創建,下面用一個具體的例子來說明整個過程。
1. 對象功能描述和系統簡要設計
本例仍然模擬電信資費管理業務流程,在服務對象端注冊一個電話用戶。用戶在遠程客戶端查詢該用戶本月發生的電話費用。根據對象功能的說明,用UML描述出服務對象需要實現的功能:
getFee() : float
openAccout( string name ) : Agent
2. 服務對象接口定義
根據系統分析結果,用IDL編寫出服務對象方法描述程序TeleComm.idl:
module TeleComm
{
interface Agent
{
float getFee();
};
interface AgentManager
{
Account openAccount(in string name);
};
};
3. 接口的實現
(1)Agent接口的實現
public class AgentImpl extends DynamicImplementation
{
//構造AgentImpl類
//get方法在invoke動態調用方法中按名字匹配調用
public synchronized org.omg.CORBA.Object get(String name){
//申請賬戶金額,生成賬戶對象
}
public void invoke(org.omg.CORBA.ServerRequest request){
//申請可移植對象適配器
//填寫調用參數,提出申請賬戶請求
}
}
(2)AgentManager接口實現
public class AgentManagerImpl extends DynamicImplementation{
//構造AgentManager類
public void invoke(org.omg.CORBA.ServerRequest request){
//填寫調用參數表,向Agent對象提出業務請求,獲取Agent對象
//……
}
}
(3)服務器端程序設計
public class Server {
public static void main(String[] args) {
//初始化ORB、申請POA和POA管理器
//申請默認服務對象,激活POA管理器
//等待調用請求
//……
}
(4)客戶端程序設計
public class Client {
public static void main(String[] args) {
//初始化ORB,定位Agentmanager對象
//發出調用請求
org.omg.CORBA.Request request=manager ._request(“getFee”);
request.invoke();
//查詢返回結果,取得返回值
request.get_response();
//異常處理
//……
}
4. 程序設計及運行環境說明
上述基于動態調用接口和動態骨架接口的程序是基于VisiBroker 4.5.1中間件環境開發的。其他環境下程序的實現方式和運行可能會有所差別。在VisiBroker環境下,按如下方式運行程序:
(1)首先啟動VisiBroker Smart Agent事務代理;
(2)啟動服務對象程序:vbj Server;
(3)啟動客戶對象程序:vbj Client。
其中vbj是VisiBroker for Java中的Java代碼解釋執行程序。讀者也可以用Java解釋工具java代替,但需要指定VisiBroker中的vbjorb等庫。
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=2318
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
