Apusic应用服务器和CORBA互操作 - 编程入门网
Apusic应用服务器和CORBA互操作时间:2007-05-30 服务器在线-doservCORBA(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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |