快速业务通道

BCB中Corba Name Service使用方法

作者 佚名技术 来源 程序设计 浏览 发布时间 2012-06-30
现最后的REPOSITORY里OBJECT NAME里出现了一个OrderObject。

D:\Program Files\Borland\CBuilder4\Projects\tcn>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:omg.org/CosNaming/NamingContext:1.0
             OBJECT NAME: Tester/1
         REPOSITORY ID: IDL:omg.org/CosNaming/ExtendedNamingContextFactory:1.0
             OBJECT NAME: Tester
         REPOSITORY ID: IDL:visigenic.com/Activation/OAD:1.0
             OBJECT NAME: 61.132.58.166
         REPOSITORY ID: IDL:Order:1.0
             OBJECT 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)\lib\name_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

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号