敬业的IT人 >> 编程开发 >> C++Builder >> BCB环境下CORBA实做之自己动手(上)

BCB环境下CORBA实做之自己动手(上)

敬业的IT人 互联网 佚名 2008-1-3 21:45:39

建立一个CORBA服务器

记不得清步骤了:-(。又去看了看,要以下几步。

  1. 设计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?谁能告诉我

为什么?!

  先不管了,反正服务器是做好了。

进入讨论组讨论。
粤ICP备06119539号
Copyright CiscoSky.Org,Some Rights Reserved.
Email:me1228#tom.com