有关Delphi开发的客户端程序与EJB连接的问题!!(200分)

  • 主题发起人 小橄榄
  • 开始时间

小橄榄

Unregistered / Unconfirmed
GUEST, unregistred user!
客户端:W2k Professional,中间层:W2k Server+EJB,服务器:W2k Server+Oralcle 9i
现用Delphi 6开发客户端程序,Jbuilder 6开发EJB,
应用服务器采用Borland Application Server 4.5 或者Borland Enterprise Server 5.01
现在通过Corba桥,客户端与EJB连接能够成功。请问各位大侠,怎么样能脱离Corba桥,让
客户端直接与EJB进行连接。
如果可以的话,最好提供一个简单的例子。
 
把ejb封装成为webservice发布,delphi中就可以直接调用了,不过目前来讲速度方面
可能稍微差一点点
 
使用BES5作为容器的时候可以采用BES5独有的SIDL功能,delphi6编写客户端可以直接调用!
 
在这里看到一篇文章
《通过Web Service让Delphi/Visual Basic程序访问EJB》
http://www-900.ibm.com/developerWorks/cn/webservices/ws-ejbacess/index.shtml
 
to skyknight:
如果采用ejb封装成为webservice发布,效率会不会比通过Corba桥来连接还要慢
to dwdy:
不知道是否可以写得详细一点,我对BES不是很熟。如果不用BES,采用别的容器,
有办法吗?
 
没有用过corba桥,不清楚。
 
(1)先将相关的EJB编写完毕,然后安装到Borland Enterprise Server5.0(BES5.0,JBuilder6.0
的光盘上有)。
(2)使用vbj com.inprise.ejb.sidl.ejb2sidl -o ejb.idl UserInfoHome输出IDL文件;
上面命令行的意思是:将EJB主接口UserInfoHome输出到ejb.idl文件中。
(3)在用Delphi编写客户端的时候,你可以参照Delphi6的安装目录下的/Demos/Corba/Idl2Pas/EJB/euroconverter
例子。在New Items中选择Corba页,打开Corba Client Application向导,在出现的窗口中添加第2步输出的
IDL文件,然后单击Generate 按钮产生新的客户端程序。
(4)参照以下代码完成客户端对EJB对象的调用:
procedure TForm1.InitCorba;
begin
CorbaInitialize;
// Bind to the Corba server like this
// Acct := TAccountHelper.bind;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
InitCorba;
Home:=TUserInfoHomeHelper.Bind('dwdy.UserInfo');
Remote:=Home._create as ejb_dwdy_i.UserInfo;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
Tmp,UserName,Pwds:String;
begin
UserName:=Edit1.Text;
Pwds:=Edit2.Text;
Tmp:=Remote.UserLogin(UserName,Pwds);
Panel1.Caption:=Tmp;
end;
(4)你要完成以上功能,必须安装VisiBroker for Delphi。
(5)以上功能只能用于BES和Delphi(BCB、Kylix)的组合,如果想使用其它的EJB容器(J2EE容器、平台)
恐怕采用Web Service可能要简单些,可移植性也比较好!
 
我觉得还是用Web Service方式调用比较好,有关的方法可以看李维的新书(不是做广告),
我正在学习。我现在参与的一个项目是用PowerBuilder做客户端,通过类似SOAP协议的方式
调用Java中间层功能,也有用Delphi做过实验。
 
顶部