快速业务通道

Apusic应用服务器和CORBA互操作 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-25

Apusic应用服务器和CORBA互操作

时间:2007-05-30 服务器在线-doserv

CORBA(Common Object Request Broker Architecture, 公共对象请求代理体系结构)是由OMG(对象管理组织,Object Management Group)提出的应用软件体系结构和对象技术规范,被广泛的用来开发分布式系统。Apusic应用服务器是以RMI-IIOP(Remote Method Invocation Internet Inter-ORB Protocol)协议为基础完成分布式的对象的远程访问,因此可以和CORBA对象进行互相调用。并且,Apusic应用服务器还完整的实现了CORBA-EJB映射规范,能够在多个应用服务器实例和CORBA客户端之间传播事务、安全等上下文信息。CORBA和EJB的互操作规范包含以下四个方面: EJB接口到CORBA接口的映射;

JNDI名字到CORBA名称服务(CosNaming )的映射;

EJB和CORBA之间的事务传播;

EJB和CORBA之间的安全传播。

本文将通过一个范例展示CORBA客户端访问部署在Apusic上的EJB。虽然这是Apusic和CORBA互操作最简单的一个方面,并且不涉及安全和事务的传播,但已经显示了Apusic在互操作方面的能力和开发的一般步骤。

首先介绍一下服务器和客户端的开发运行环境。服务器端的环境为:

Windows 2000 Server

JDK1.4.2

Apusic应用服务器3.0

客户端的环境为:

Windows 2000 Professional

JDK1.4.2

Apusic应用服务器完全支持标准的EJB-CORBA映射,也就是说,EJB的home和remote也是CORBA对象。我们可以使用JDK提供的RMI编译器rmic -idl为EJB产生CORBA视图的IDL接口。用来定位EJB home接口的JNDI(Java naming service)被映射成CORBA naming service,这样,CORBA客户端就能查找和定位home接口并象CORBA对象一样使用它们。下图描述了CORBA客户端访问EJB的一般步骤:这些步骤包括:

开发并部署EJB;

使用RMI编译器rmic -idl为EJB远程接口产生IDL;

使用CORBA IDL编译器根据客户端的程序语言为客户端产生存根(stub);

配置EJB服务器使用CORBA名称服务。Apusic缺省就使用CORBA名称服务作为JNDI 服务的提供者;

CORBA客户端在CORBA名称服务中查找和定位EJB;

CORBA客户端象访问普通CORBA对象一样访问EJB;

首先开发一个EJB模块,编译并部署到Apusic应用服务器上。这个例子中的EJB非常简单,是一个Stateless Session Bean,只包含一个业务方法sayHello。

public java.lang.String sayHello(java.lang.String name) {

String result = "hello, " + name;

System.out.println("invoke sayHello() : " + result);

return result;

}

然后使用RMI编译器rmic -idl为EJB远程接口产生IDL:

rmic -idl -noValueMethods

-classpath %apusic_home%/lib/apusic.jar;../ejb/build

-d idl samples.ejb.Hello samples.ejb.HelloHome

理论上可以使用任何CORBA规范支持的程序语言开发CORBA客户端。本范例展示的是Java CORBA客户端的开发。使用JDK1.4.2提供的idlj编译上一步得到的IDL:

idlj -emitAll -i ./idl -i %java_home%/lib

-fclient

-pkgPrefix java apusic

-pkgPrefix javax apusic

-pkgPrefix samples apusic

-td src

./idl/samples/ejb/Hello.idl

idlj -emitAll -i ./idl -i %java_home%/lib

-fclient

-pkgPrefix java apusic

-pkgPrefix javax apusic

-pkgPrefix samples apusic

-td src

./idl/samples/ejb/HelloHome.idl

注意,我们为IDL文件中的java、javax和samples模块在生成代码时增加了“apusic”作为package的前缀,这样可以避免同Java核心API的冲突。

JDK1.4.2提供的idlj编译器生成的Java代码包含了bug,必须手工更改这些错误。将类_Exception.java,CreateException.java和RemoveException.java中的_re

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号