找了半天板块,想想还是发在这里合适。项目中用到CORBA技术,但是感觉它实在是太繁琐了,尤其是一旦IDL有些变化,整个程序又得重写,所以想用Java反射技术和CORBA的DSI技术写一个桥接器,能够直接把指定的Java类映射成Corba的对象。试了一下如果参数和返回值是简单类型的话没有任何问题,但是如果是结构的话就不知道该如何写了,因为如果是结构的话,在Java中试用对象表示的,还得继承Corba的Object接口,这样其中定义的很多方法得自己写,如果继承ObjectImpl类,方法不需要自己写了,但是Java因为不支持多重继承,无法再继承自己定义的类...呵呵请高手指教了,如果实在不行的话,打算复杂变量直接用XML来表示了

解决方案 »

  1.   

    但是Java因为不支持多重继承,无法再继承自己定义的类... 
    既然这样,你就得应用接口实现!
      

  2.   

    如果不使用DSI的方式,两边都通过IDL编译的框架类实现也是可以的。我在想能不能用类似于Spring依赖注入的方式,服务器端在编写的时候不使用 Corba思想,等到编写玩了,通过一个配置文件告诉某个Servant,某某类的所有public类型的方法通过Corba方式发布。初步构想是这样的:首先在该Servant中获取客户端请求的对象名,查找配置文件得到对应的Java类,然后通过反射技术获取方法的变量和返回值类型,构造Any类型,加入NVList中,并传递给Servant,获取各个Any的值,再通过反射技术动态构造Java对象执行这个方法,并将返回值打包成Any类型通过Servant返回。这样做能大大减少服务端的开发,如果以后IDL有变动也没有关系。如果都是简单类型的话,这样的实现应该不难,现在问题就卡在如果某个参数或者是返回值是自定义结构的话,这个Any应该如何构造。如果不能实现,那么只能用变通的方法:所有复杂类型都用字符串格式的XML表述,让客户端自己解析去,不过总感觉这样做不完美,呵呵。如果能实现通用的桥接器的话,那么 Java下面的Corba开发难度将大为降低。