亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

BCB中Corba Name Service使用方法

2019-09-06 23:33:40
字體:
來源:轉載
供稿:網友

                    由于在嘗試用BCB 4訪問NameService時,遇到了一些奇奇怪怪的問題,而Visibroker所帶的例子卻可以用bcc32正常編譯運行,俺決定從頭做一個程序看看問題出在哪里。折騰了一夜,結論是做服務器還是不用Corba Server wizard好。(我還是不明白為什么?)

1、File| New, Multitier,Corba IDL File:

interface Order{

string Name();

};

存為order.idl

2、File|New, Consol Wizard,生成一個無vcl支持的consol應用。

3、Project|Add to project,選上剛寫的order.idl,Project | Compile之。

4、File|New, Miltitier, Corba Object Implementation,IDL選剛寫的order.idl,Interface選Order,為簡明起見,其它的名字就不改了。確定,自動生成OrderServer.cpp。

5、在OrderServer.cpp中找到char* OrderImpl::Name(),在其函數體中寫:
return "Hi, I am Test CorbaServer";

6、File | Save All,Unit1.cpp存為tcnServer.cpp,Project存為tcnServer.bpr。然后Make之。一個簡單的Corba Server就做好了。

7、測試運行一下,然后在MS-Dos方式下運行osfind.exe(應該在path里,否則到$(VBroker)in里找),這時會顯示一系列的corba信息:

C:>osfind

osfind: Found one agent at port 14000
    HOST: YANGWU

osfind: Found 1 OADs in your domain
HOST: YANGWU

osfind: Following are the list of Implementations registered with OADs.
    HOST: YANGWU

        REPOSITORY ID: IDL:CorbaTester/DBServer2Factory:1.0
            OBJECT NAME: DBServer2

osfind: Following are the list of Implementations started manually.
HOST: YANGWU

        REPOSITORY ID: IDL:Order:1.0
            OBJECT NAME: OrderObject

        REPOSITORY ID: IDL:visigenic.com/Activation/OAD:1.0
            OBJECT NAME: 61.132.58.166


8、確定無誤后,回到IDE中,打開tcnServer.CPP,在#include的最后部分加上:
#include "CosNaming_c.hh"
然后,Project | Add To Project,將$(VBroker)libame_br.lib加到工程中,這時tcnServer.CPP的頂部分出現USELIB("......vbrokerlibame_br.lib"); 一行代碼。其中的path與你的Visibroker安裝目錄及工程的保存位置都有關,以你的BCB生成的代碼為準。

9、boa->obj_is_ready(&order_OrderObject);一句(如無意外應為26行),在這一行和下邊的注釋// Wait for incoming requests之間加上以下代碼段,完成NamingContext建立、Name建立、Name綁定的工作:
//獲取由命令行參數傳入的NameComponent
const char* id = argv[1];
const char* kind = argv[2];
//取得默認的NamingContext對象
CosNaming::NamingContext_var context = CosNaming::NamingContext::_bind();
//生成一個Name對象
CosNaming::Name name;
//設定Name中只包含1個{id,kind}的NameComponet
name.length(1); name[0].id = id; name[0].kind = kind;
//將該名字綁定給程序中建立的對象實例order_OrderObject
context->bind(name, &order_OrderObject);
//在consol上輸出已經綁定的名字。
cout << "The object is bound: "" << name[0].id << "" "" << name[0].kind << """ << endl;

10、File | Save All,Project | Make之。

11、測試運行:進入MS-DOS方式,
start nameextf MyTester test.log //啟動NamingContext Factory
start tcnServer MyName MyKind //啟動服務器,指定其名字為{MyName, MyKind}
再用osfind查看就會發現最后的REPOSITORY里OBJECT NAME里出現了一個OrderObject。

D:Program FilesBorlandCBuilder4Projectscn>osfind

osfind: Found one agent at port 14000
/tHOST: YANGWU

osfind: Found 1 OADs in your domain
/tHOST: YANGWU

osfind: Following are the list of Implementations registered with OADs.
/tHOST: YANGWU

/t/tREPOSITORY ID: IDL:CorbaTester/DBServer2Factory:1.0
/t/t/tOBJECT NAME: DBServer2

osfind: Following are the list of Implementations started manually.
/tHOST: YANGWU

/t/tREPOSITORY ID: IDL:omg.org/CosNaming/NamingContext:1.0
/t/t/tOBJECT NAME: Tester/1

/t/tREPOSITORY ID: IDL:omg.org/CosNaming/ExtendedNamingContextFactory:1.0
/t/t/tOBJECT NAME: Tester

/t/tREPOSITORY ID: IDL:visigenic.com/Activation/OAD:1.0
/t/t/tOBJECT NAME: 61.132.58.166

/t/tREPOSITORY ID: IDL:Order:1.0
/t/t/tOBJECT NAME: OrderObject

--------------------------------------------------------------------------------

下邊就做個Client來試試訪問。

1、File | New,Consol Wizard,做一個不支持VCL的consol應用。

2、Project| Add To Project,將選前邊做server時寫的order.idl加進來。

3、File | Save All,取名為tcnClientConsol.bpr(.cpp),存到server同一目錄里。(在其下建立一個client子目錄似乎也不錯)。

4、Edit | Use Corba Object,IDL File已經填好,如果不對手動改為order.idl,Interface選Order,Object Name寫OrderObject(做服務器時指定的)。其余不改,確定。

5、注意此時主程序中已經完成了orb和boa的初始化工作。注意,注釋掉boa->impl_ready();!

6、在主程序頭部加上#include "CosNaming.hh",并將$(VBroker)libame_br.lib加進Project。

7、在main()的那個try的最后,加上如下代碼:
const char* id=argv[1];
const char* kind=argv[2];
CosNaming::NamingContext_var context=CosNaming::NamingContext::_bind();
CosNaming::Name name;
name.length(1); name[0].id=id;name[0].kind=kind;
CORBA::Object_var obj=context->resolve(name);
Order_var order=Order::_narrow(obj);
cout<< "test result: "<<order->Name()<< endl;

8、啟動服務器并綁定名字給它,然后運行客戶程序。要說明的是如下幾點:首先我們在服務器中沒有注銷名字的動作,所以用綁定過的名字再來啟動服務器就會提示已經綁定過的提示并自動退出,所以每次要用不同的名字來啟動服務器,或每次都將test.log刪掉后從頭做。其次如果test.log不清除,那只要有一個服務器的實例在運行,就可以使用定義過的任何一個名字來取得服務器對象引用。第三測試過程可以不退出nameextf這個factory,省掉操作,而如果不刪除test.log的話,重啟nameextf后,它會自動恢復到上次退出時的狀態,即所有的名字仍可使用。最后,如果進行名字綁定的那個對象實例在內存中,那么使用該名字訪問該對象速度最快,用其它名字則要慢很多(3~5秒)。


--------------------------------------------------------------------------------

做一個漂亮的Windows客戶

1、File | New,Multitier,Corba Client,GUI型,IDL選order.idl。

2、Edit | Use Corba Object,Interface選Order,ObjectName填OrderObject。

3、File | Save All,Project存為tcnClient.bpr,unit1.cpp存為OrderClient.cpp

4、Form1上放一個Edit1,一個Button1,Button1的OnClick代碼為:
Edit1->Text=AnsiString(order->Name());

5、這時一個簡單的CORBA CLIENT做好了,試一下Project | Make,Run。

6、在Form1上再放兩個Edit(2,3),其Text分別為"MyName","MyKind",放兩個Lable,注明這兩個Edit分別代表"name[0].id","name[0].kind"。

7、在Form1上放個Button,Button2的OnClick代碼為:

try {
  Edit1->Text="正在查找名為:{"+Edit2->Text+","+Edit3->Text+"}的對象";
  CosNaming::NamingContext_var context = CosNaming::NamingContext::_bind(); //取根名字空間
  CosNaming::Name name;
  char id[32],kind[32];
  strcpy(id ,Edit2->Text.c_str());
  strcpy(kind ,Edit3->Text.c_str());
  name.length(1);
  name[0].id = id;
  name[0].kind = kind; //以上將Edit2,Edit3的內容組成一個名字,存在name中。
  CORBA::Object_var object = context->resolve(name); //求解這個名字,得到對CORBA對象的引用
  Order_var test = Order::_narrow(object);
  if(!CORBA::is_nil(test)) {Edit1->Text=AnsiString(test->Name()); }
  else Edit1->Text="訪問失??!";
}
catch(const CORBA::Exception& e)
{
  ShowMessage(e._description.name());
  exit(1);
}


--------------------------------------------------------------------------------

樣本工程源碼(內含consol Server、WinGUI Server、consol Client、WinGUI Client)
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美一区二区三区精品电影| 日韩中文第一页| 亚洲一区二区福利| 菠萝蜜影院一区二区免费| 日本中文字幕成人| 欧美体内谢she精2性欧美| 亚洲最大成人免费视频| 午夜精品三级视频福利| 久久久电影免费观看完整版| 日韩综合视频在线观看| 亚洲另类激情图| 日韩av一区在线观看| 亚洲日韩欧美视频一区| 性色av一区二区三区| 国模gogo一区二区大胆私拍| 亚洲国产精品福利| 国产精品久久久久久久久男| 日韩成人在线电影网| 秋霞av国产精品一区| 久久久精品一区二区| 欧洲s码亚洲m码精品一区| 久久久精品2019中文字幕神马| 成人一区二区电影| 性欧美xxxx交| 国产成人亚洲精品| 亚洲欧美日韩另类| 伊人亚洲福利一区二区三区| 伊人精品在线观看| 91中文字幕在线| 国产成人精品午夜| 亚洲电影第1页| 欧美日韩一区二区在线| 大胆欧美人体视频| 免费99精品国产自在在线| 国产日韩亚洲欧美| 亚洲女同精品视频| 久久中文字幕视频| 国产精品网站大全| 成人性生交大片免费看小说| 亚洲人午夜精品免费| 亚洲第一在线视频| 在线精品高清中文字幕| 亚洲精品一区二区三区婷婷月| 久久精品91久久久久久再现| 亚洲a∨日韩av高清在线观看| 深夜福利91大全| 伊人伊成久久人综合网小说| 日韩美女毛茸茸| 国产丝袜一区二区三区免费视频| www日韩欧美| 成人a免费视频| 国产欧美一区二区三区在线| 精品综合久久久久久97| 国产精品高潮呻吟久久av野狼| 热久久视久久精品18亚洲精品| 日本国产高清不卡| 日韩中文综合网| 国产在线不卡精品| 亚洲精品综合精品自拍| 亚洲国产精品久久| 欧美激情xxxx性bbbb| 成人亲热视频网站| 日本精品va在线观看| 97久久精品国产| 在线观看中文字幕亚洲| 亚洲第一区在线| 国产亚洲精品va在线观看| 亚洲最新视频在线| 亚洲电影在线看| 91精品国产综合久久香蕉| 大荫蒂欧美视频另类xxxx| 曰本色欧美视频在线| 亚洲乱码一区二区| 日韩av123| 久久91超碰青草是什么| 欧洲成人在线观看| 国产欧美亚洲精品| 亚洲欧美综合区自拍另类| 日韩欧美极品在线观看| 91免费高清视频| 日韩精品在线视频观看| 97视频在线观看网址| 中文字幕免费精品一区高清| 深夜福利一区二区| 亚洲欧洲中文天堂| 久久天天躁狠狠躁老女人| 亚洲午夜精品久久久久久久久久久久| 国产有码在线一区二区视频| 欧美在线视频在线播放完整版免费观看| 国产一区二区色| 国产精品黄视频| 亚洲第一精品福利| 国产成人精品午夜| 国产成人一区二区在线| 亲爱的老师9免费观看全集电视剧| 国产aaa精品| 国产精品久久久亚洲| 国产精品高潮呻吟久久av无限| 国产精品久久久久久久久久久久久| 欧美日韩免费区域视频在线观看| 激情av一区二区| 欧美亚洲国产视频| 色综合久综合久久综合久鬼88| 免费不卡欧美自拍视频| 中文字幕一区二区精品| 国产欧美精品久久久| 伊人久久大香线蕉av一区二区| 中文字幕亚洲欧美| 国产一区二区三区高清在线观看| 日韩福利视频在线观看| 亚洲国产精品久久91精品| 午夜精品蜜臀一区二区三区免费| 中文字幕日韩欧美在线视频| 欧美亚洲成人xxx| 欧美日韩国产精品一区二区不卡中文| 欧美日韩中文字幕综合视频| 成人精品一区二区三区| 国产精品久久久久久久美男| 欧美日韩成人免费| 亚洲精品国产精品乱码不99按摩| 亚洲电影免费观看高清完整版| 欧美裸体xxxx| 欧美精品成人91久久久久久久| 91香蕉亚洲精品| 亚洲区bt下载| 91麻豆国产精品| 国产91网红主播在线观看| 欧美高清视频在线观看| 亚洲另类xxxx| 久久久久国产精品www| 久久久精品一区二区| 国内精品久久影院| 国产精品大片wwwwww| 久久精品这里热有精品| 在线观看日韩www视频免费| 日韩精品中文字幕在线播放| 欧美日韩在线另类| 91久久久久久| 亚洲高清av在线| 欧美日韩国产专区| 欧洲成人免费视频| 91国自产精品中文字幕亚洲| 国产69精品久久久久9999| 亚洲福利视频网站| 亚洲人成免费电影| 一区二区三区视频在线| 国内外成人免费激情在线视频网站| 久久久久久中文字幕| 日韩动漫免费观看电视剧高清| 欧美xxxx18国产| 亚洲欧洲高清在线| 亚洲精品国产欧美| 精品国产区一区二区三区在线观看| 亚洲精品国产欧美| 91香蕉亚洲精品| 国产手机视频精品| 国产精品r级在线| 亚洲伊人久久综合| 亚洲精品久久视频| 国产在线观看不卡| 国产精品一香蕉国产线看观看| 亚洲图片欧美午夜| 97碰在线观看| 欧美成人高清视频|