当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:16:00  来源:本站整理

Apusic操纵服务器和CORBA互操作[Java编程]

赞助商链接



  本文“Apusic操纵服务器和CORBA互操作[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

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中的_read和 _write办法注释或删掉.

这时,我们按照IDL编译器编译生成的Java文件,供应客户端实现,主程序的代码片断以下:

ORB orb = ORB.init(args, null);

// Look up the HelloHome, create an Hello and use it.

NamingContextExt nc =

NamingContextExtHelper.narrow(orb.resolve_initial_references("NameService"));

HelloHome home =

HelloHomeHelper.narrow(nc.resolve_str("ejb/CORBAClientSample"));

Hello hello = home.create();

String str = (String) hello.sayHello("apusic,corba client");

System.out.println(str);

System.exit(0);

从上面的代码中我们看到了CORBA客户端如安在CORBA名称服务中查找和定位EJB,并且若何象拜候普通CORBA对象一样拜候EJB.

最后我们编译并运行客户端.注意,我们并不需求编译全部idlj生成的Java源文件,只要编译包apusic.sample.ejb和我们编写的客户端主程序.Java编译器会按照类的衔接情形自动编译类中引用的其他类.

javac -d ../build -sourcepath ./ apusic\samples\ejb\*.java

javac -d ../build -sourcepath ./ CorbaClient.java

确认EJB已经布置在Apusic上并且服务器正常运行.在号令行启动CORBA客户端,通过启动参数奉告客户端Apusic的位置和端口,来保证客户端ORB的精确初始化.假定Apusic运行在本机上,端口为6888:

java CorbaClient -ORBInitialHost localhost -ORBInitialPort 6888

假如前面的步骤都精确完成,我们将在客户端的屏幕上看到: hello, apusic,corba client

这个例子只是简单的展示了CORBA客户端可以拜候EJB组件的业务办法.实际上CORBA和EJB的互操作复杂的地方在于事件和安全的映射,因此要求开辟者对CORBA标准和开辟对比熟习.并且Java到IDL的映射大概碰到很多问题,比方:ValueType映射,调集的利用等,这就使CORBA客户端拜候EJB在很多情形下不能成功.即便如此,Apusic支持和CORBA的互操作,仍然对我们集成已有的CORBA系统、开辟异构环境的分布式利用供应了很大的帮忙,只是对开辟人员的技术要求对比高.


  以上是“Apusic操纵服务器和CORBA互操作[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • Apusic操纵服务器和CORBA互操作
  • Apusic OperaMasks简介
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .