|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
那这个对象有什么意义?现在很多用javabean的人就不能保证对象有完整的意义,不成熟的使用模式等导致代码疯狂增长,调试维护的时间要得多得多。在说性能之前,先说说你这个比较的来历。据说微软为了证明。net网页编程比java好。
CORBA(CommonObjectRequestBrokerArchitecture,大众对象哀求代办署理系统布局)是由OMG(对象办理构造,ObjectManagementGroup)提出的使用软件系统布局和对象手艺标准,被普遍的用来开辟散布式体系。Apusic使用服务器是以RMI-IIOP(RemoteMethodInvocationInternetInter-ORBProtocol)协定为基本完成份布式的对象的远程会见,因而能够和CORBA对象举行相互挪用。而且,Apusic使用服务器还完全的完成了CORBA-EJB映照标准,可以在多个使用服务器实例和CORBA客户端之间传布事件、平安等高低文信息。CORBA和EJB的互操纵标准包括以下四个方面:EJB接口到CORBA接口的映照;
JNDI名字到CORBA称号服务(CosNaming)的映照;
EJB和CORBA之间的事件传布;
EJB和CORBA之间的平安传布。
本文将经由过程一个典范展现CORBA客户端会见部署在Apusic上的EJB。固然这是Apusic和CORBA互操纵最复杂的一个方面,而且不触及平安和事件的传布,但已显现了Apusic在互操纵方面的才能和开辟的一样平常步骤。
起首先容一下服务器和客户真个开辟运转情况。服务器真个情况为:
Windows2000Server
JDK1.4.2
Apusic使用服务器3.0
客户真个情况为:
Windows2000Professional
JDK1.4.2
Apusic使用服务器完整撑持尺度的EJB-CORBA映照,也就是说,EJB的home和remote也是CORBA对象。我们可使用JDK供应的RMI编译器rmic-idl为EJB发生CORBA视图的IDL接口。用来定位EJBhome接口的JNDI(Javanamingservice)被映照成CORBAnamingservice,如许,CORBA客户端就可以查找和定位home接口并象CORBA对象一样利用它们。下图形貌了CORBA客户端会见EJB的一样平常步骤:这些步骤包含:
开辟并部署EJB;
利用RMI编译器rmic-idl为EJB远程接口发生IDL;
利用CORBAIDL编译器依据客户真个程序言语为客户端发生存根(stub);
设置EJB服务器利用CORBA称号服务。Apusic缺省就利用CORBA称号服务作为JNDI服务的供应者;
CORBA客户端在CORBA称号服务中查找和定位EJB;
CORBA客户端象会见一般CORBA对象一样会见EJB;
起首开辟一个EJB模块,编译并部署到Apusic使用服务器上。这个例子中的EJB十分复杂,是一个StatelessSessionBean,只包括一个营业办法sayHello。
publicjava.lang.StringsayHello(java.lang.Stringname){
Stringresult="hello,"+name;
System.out.println("invokesayHello():"+result);
returnresult;
}
然后利用RMI编译器rmic-idl为EJB远程接口发生IDL:
rmic-idl-noValueMethods
-classpath%apusic_home%/lib/apusic.jar;../ejb/build
-didlsamples.ejb.Hellosamples.ejb.HelloHome
实际上可使用任何CORBA标准撑持的程序言语开辟CORBA客户端。本典范展现的是JavaCORBA客户真个开辟。利用JDK1.4.2供应的idlj编译上一步失掉的IDL:
idlj-emitAll-i./idl-i%java_home%/lib
-fclient
-pkgPrefixjavaapusic
-pkgPrefixjavaxapusic
-pkgPrefixsamplesapusic
-tdsrc
./idl/samples/ejb/Hello.idl
idlj-emitAll-i./idl-i%java_home%/lib
-fclient
-pkgPrefixjavaapusic
-pkgPrefixjavaxapusic
-pkgPrefixsamplesapusic
-tdsrc
./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文件,供应客户端完成,主程序的代码片段以下:
ORBorb=ORB.init(args,null);
//LookuptheHelloHome,createanHelloanduseit.
NamingContextExtnc=
NamingContextExtHelper.narrow(orb.resolve_initial_references("NameService"));
HelloHomehome=
HelloHomeHelper.narrow(nc.resolve_str("ejb/CORBAClientSample"));
Hellohello=home.create();
Stringstr=(String)hello.sayHello("apusic,corbaclient");
System.out.println(str);
System.exit(0);
从下面的代码中我们看到了CORBA客户端怎样在CORBA称号服务中查找和定位EJB,而且怎样象会见一般CORBA对象一样会见EJB。
最初我们编译并运转客户端。注重,我们其实不必要编译一切idlj天生的Java源文件,只需编译包apusic.sample.ejb和我们编写的客户端主程序。Java编译器会依据类的毗连情形主动编译类中援用的其他类。
javac-d../build-sourcepath./apusicsamplesejb*.java
javac-d../build-sourcepath./CorbaClient.java
确认EJB已部署在Apusic上而且服务器一般运转。在命令行启动CORBA客户端,经由过程启动参数告知客户端Apusic的地位和端口,来包管客户端ORB的准确初始化。假定Apusic运转在本机上,端口为6888:
javaCorbaClient-ORBInitialHostlocalhost-ORBInitialPort6888
假如后面的步骤都准确完成,我们将在客户真个屏幕上看到:hello,apusic,corbaclient
这个例子只是复杂的展现了CORBA客户端可以会见EJB组件的营业办法。实践上CORBA和EJB的互操纵庞大的中央在于事件和平安的映照,因而请求开辟者对CORBA标准和开辟对照熟习。并且Java到IDL的映照大概碰到良多成绩,比方:ValueType映照,汇合的利用等,这就使CORBA客户端会见EJB在良多情形下不克不及乐成。即便云云,Apusic撑持和CORBA的互操纵,仍然对我们集成已有的CORBA体系、开辟异构情况的散布式使用供应了很年夜的匡助,只是对开辟职员的手艺请求对照高。
专门做了这个例子;而java的这个例子好像就是为了教学而写的,很多教学目的的例子是不考虑优化、性能的。 |
|