BCB环境下CORBA实做之自己动手(上)
建立一个CORBA服务器
记不得清步骤了:-(。又去看了看,要以下几步。
- 设计Server对象界面
就是建立一个IDL文件。这也就是说,要先设计好服务器的对象结构,不过好在BCB可以根据IDL文件的修改自动更新其它生成代码,问题不大。俺且做一个最简单的吧:服务器对象界面为StockServer,该对象只有一个string getName();方法。将来客户可以调用它取得TCorbaTestObj名字。
//testobj.idl
interface StockServer{
string getName();
};
俺把它存在projects\tstcorbaobject\testobj.idl里。以后都在这个目录里工作。
注意:最后那个";"一定要写!不然编译会出错。这是IDL,不是C++。
2、使用CORBA server wizard建立服务器应用程序
File | New,再下面的对话框中选Multitier, CORBA Server
接着,在Wizard里选WindowsApplication,并用Add...加入testobj.idl
OK,自动生成Project1.cpp。将它存为testserver.cpp
刚才在bcb5+vbroker4下试了一下,发现同时生成有form1,第一个对话框问的是unit1的文件名字,随便给一个好了,可不要弄混了或者取同样的名字哟。 2000.3.29
3、编译包含界面定义的IDL文件,得到框架及存根。
切换到testobj.idl(该文件如果没在编辑窗里就用Ctrl+Alt+F11,再双击这个文件打开),选Project|Compile Unit。
这时,发生了一个小故障:Fail to run IDL2CPP.EXE,系统找不到文件。幸好我记得俺的VisiBroker3.3 for C++装在D:\Visibroker33里,这个文件在bin目录里,于是到我的电脑,属性里找到环境页(NT4),在CLASSPATH里加上d:\vsbroker33\lib\vbcpp.jar,在PATH里加上d:\vsbroker33\bin;d:\vsbroker33\jre\bin;确定即可,不用重启。
编译之后,代码编辑窗又多出两页来:testobj_s.cpp(框架)和testobj_c.cpp(存根)。
4、用CORBA object wizard定义(并实现)实现类。
“实现”挺拗口的,有时是动词有时是形容词:
- 界面的实现类? 据IDL文件定义的界面生成的类,该类实现这个界面,
BCB可以自动完成,这样生成的实现类只有空白方法 - 实现类的实现:编写方法代码等,把上面提到的空壳实现类变成真正有用的类。
所以现在,俺要生成实现类(就是那个空壳子)。
File|New,从对话框的mutitier页中选择CORBA Object Implementation图标,过一小会就见:
IDL文件里那个就是我想用的,如果不是还可以用...去选。
Interface Name嘛,这会只有一个可用就是StockServer。
实现类的单元名字,StockServerServer也挺好,就不改了。
类名字就用它默认的好了。
起始时在main()里实例化对象好了,这个对象实例名字就叫StockServerObject好了。多个实例(按...加入)就以后再试好了,现在且走着。
OK之后,代码编辑窗口里又开了一页:StockServerServer.cpp
5、 完成4建立的类实现CORBA对象
在StockServerServer.cpp里底部的getName(){}里加一句,使之成为:
char* StockServerImpl::getName()
{
return "CorbaServerTester";
}
Project Make之,会有一个warning。俺猜那个定义但未使用的变量是用来处理入口参数的。
好了,Server制作完成。慢来慢来!F9了一下,居然,Exception!
忘了,还得要注册IDL文件呢!不对呀,明明说不是必需的嘛,先试试。
不灵!
现存怀疑是Delphi所带3.2与CBuilder的3.3互相干扰,于是用移去3.2用3.3取代其目录,不灵!
没招了,于是打开一个VBroker3.3 for c++带的例子试试,哈哈,还是不灵!
这就不是程序的问题了,看来是VBroker的问题了。
不对不对,俺在IDE之外运行俺的SERVER和VBroker3.3的Account Server都好好的,不过测试篇说的Test工具一个对象也找不到。又看了看VisiBroker的说明,要求在win下用start xxx来启动,为什么不直接运行xxx?谁能告诉我
为什么?!
先不管了,反正服务器是做好了。
进入讨论组讨论。- 最新文章
- 深入VCL 理解BCB的消息机制[01-03]
- 客户机/服务器中数据流的接收和发送(上)[01-03]
- 用C++ Builder 制作屏幕保护程序[01-03]
- 开发 C++ Builder 应用程序[01-03]
- 利用C++Builder遍历文件目录[01-03]
- 利用C++ Builder为计算机增加启动日志[01-03]
- 相关文章
- Borland C++ Builder的API后门[01-03]
- Borland C++ Builder 5 企业版使用BDE..[01-03]
- 从TColor对象中解析出红、绿、蓝的亮度[01-03]
- 用C++Builder写COM版的Hello world[01-03]
- 用C++Builder实现Word 97自动化[01-03]
- 如何把数据库的内容写入到Word文档中[01-03]
