扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:thx 来源:论坛 2007年10月31日
关键字:
2.2开发环境
本文实例在Windows 2000 Server系统下,使用j2sdk1.4.0_03、J2EE CAS COM Bridge 1.0 、Delphi 7、Jbuilder 8、Weblogic server 7作为开发工具,全部通过测试并运用于实际项目中。EJB组件部署在Weblogic server,客户端运行时必须安装JVM和COM桥。
2.3实现访问EJB组件
这里以访问一个简单的会话Bean为例来说明如何在Delphi中集成EJB和COM客户。
这个部署在Weblogic Server上的会话Bean有一个简单的test()方法:
public String test() {
return new String("Test successfully!");
}
这里就不描述Bean的具体开发过程,按通常的方式实现它,无需任何特别的修改。假定这个Bean的JNDI名称为"ServiceFacade",Home接口和Remote接口分别为ServiceFacade和ServiceFacadeHome。
现在我们来实现客户端。为了简化起见,我们直接使用默认的JVM属性,所以这里要把weblogic.jar和Bean的客户部署类(示例使用client.jar)添加到环境变量CLASSPATH里面(只要类在JVM的类搜索路径里,我们就能通过COM桥来访问它)。
为了简化编程我们使用动态绑定方式调用COM桥(如果使用静态绑定方式必须使用COM桥提供的类型库工具为需要访问的Java类生成类型库和注册类型库)。这里需要提出的一点是默认情况下COM桥只支持J2EE的参考实现,要想让COM桥支持Weblogic server,要注册COM桥提供的Weblogic服务模块(在命令行提示下执行 regsvr32 %J2EE_CAS_BRIDGE%\doc\appserver-connectivity-asmples\bin\ weblogic-services.dll)。因为COM桥把客户的调用转换成了真正的java调用,所以我们可以按照java客户访问EJB的步骤来使用COM访问。
COM桥与客户交互时传递的对象实现了OLE自动化接口,在Delphi里面我们可以使用IDispatch来容纳[3]。企业级服务模块简化了其中的部分步骤,它为我们完成了初始化上下文等任务。以下为客户端示例。
初始化企业服务模块:
var : ws: variant;
…
{1、访问其他服务器时,可以从注册表查找到企业服务的名称
2、 不同的服务器对应的模块提供相同的接口
3、 企业级服务模块简化了操作
4、 COM桥返回的对象都是IDispatch接口,可以把一个IDispath接口赋给一个variant变量
}
ws:=CreateOleObject('J2EECAS.WeblogicServices');//新建Weblogic服务类的实例
ws.ProviderURL:='t3://127.0.0.1:7001';//JNDI的初始URL
查找Home对象和创建EJB对象:
var : jHome,obj variant;
…
JHome: =ws. LookUpEjb ('ServiceFacade','ServiceFacadeHome');
//参数为JNDI名和Home接口名 ,把Home对象作为Idispatch接口返回。
Obj: =jHome. Create;//
ShowMessage(obj.test);//调用EJB对象的方法test()。
至此已经成功实现了COM客户对EJB组件的访问。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者