Apusic应用处事器和CORBA互操纵
当前位置:以往代写 > JAVA 教程 >Apusic应用处事器和CORBA互操纵
2019-06-14

Apusic应用处事器和CORBA互操纵

Apusic应用处事器和CORBA互操纵

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

#p#分页标题#e#

这个例子只是简朴的展示了CORBA客户端可以或许会见EJB组件的业务要领。实际上CORBA和EJB的互操纵巨大的处地址于事务和安详的映射,因此要求开拓者对CORBA类型和开拓较量熟悉。并且Java到IDL的映射大概碰着许多问题,譬喻:ValueType映射,荟萃的利用等,这就使CORBA客户端会见EJB在许多环境下不能乐成。纵然如此,Apusic支持和CORBA的互操纵,依然对我们集成已有的CORBA系统、开拓异构情况的漫衍式应用提供了很大的辅佐,只是对开拓人员的技能要求较量高。

    关键字:

在线提交作业