j2ee 异构环境分布式组件开发--CORBA

作为分布式组件技术的标准的CORBA在j2ee异构环境开发中占有重要地位。目前,可以通过CORBA很容易的实现平台透明性,网络透明性和编程语言透明性,也就是说通过CORBA,可以在j2ee程序里面调用处于世界上任何位置任何操作系统和任何语言编写的代码的方法,的确是很强大的功能。 语言无关性是CORBA相对于RMI的一个显著优点,RMI只能用于java语言编写的组件之间的异构环境先的调用。

    这里只是记录在java中进行CORMA使用的过程中的一下容易出现的问题。

   首先,我遇到的一个问题就是通过idlj Show.idl产生一些代码后,导入eclipse后 报无法解析的错误,这是因为需要导入java的CORBA jar包,一般CORBA规范的java开源实现有jacorb项目,可以到网上1去下载相应的jar包。

  其次,遇到一个很奇怪的错误,就是在编写服务器端组件类的时候,需要继承一个idlj命令产生的类,但是这个类却是一个接口,编译不过。结果很久的查找和分析,最后才知道,是因为idlj命令的版本问题, 在不同的jdk版本中,idlj命令的实现也是不同的, 如果直接敲入idlj,就是使用当前jdk版本的该命令了,为了生成需要的CORBA服务器sketon类而非接口,需要加入 2个选项: idlj -oldImplBase -fall Hello.idl    ,这样就会多生成2个类,   _ShowImplBase.java和ShowPOA.java,然后让服务器端的组件类继承 _ShowImplBase.java类就可以了。

    还要说一下在部署的时候的一些注意点:

       首先要打开命名服务:在dos下,tnameserv -ORBInitialPort 1050。 在1050端口监听注册。

      然后打开了一个dos,运行服务器端的服务类来注册服务器组件类(也就是提供业务功能的类):java HelloServer -ORBInitialPort 1050,端口一定要是1050,否则报错。这一步是通过端口1050向在该端口监听的命名服务注册该服务器端的组件类对象。

   最后,打开一个新的dos,运行客户端类,就可以获取远程主机上的异构环境下的方法调用了。

  过程与rmi类似,但是其功能则要强得多,因为其还可以提供OS即对象服务,这个根据CORBA规范的不同实现产商可能提供的对象服务的种类也有所有不同,通过这些对象服务,可以为组件对象提供一些通用服务,如:事物,安全等等。

  

你可能感兴趣的:(j2ee 异构环境分布式组件开发--CORBA)