站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2EE 专题CORBA:: IDL中后一个interface的一个函数,用前一个interface作为参数是否可以

CORBA:: IDL中后一个interface的一个函数,用前一个interface作为参数是否可以

摘要: CORBA:: IDL中后一个interface的一个函数,用前一个interface作为参数是否可以


例如IDL中间定义了两个interface A和B

B中间有一个Function(in A a)使用了A作为参数

Server端用Class ◎实现Interface A,继承A的POA

从Client端调用Function的时候将一个在client端的◎作为参数传入
(这里应该是一个通过interface A拿到的Class ◎的Stub)

在server端,能拿到A,要如何才能让他转换成◎ (◎是继承A的POA)

从而做◎所需要的工作?


类型强转


(◎) A
的话,我这边会暴出Java.Lang.ClassCastException


看lz的调用逻辑有点混乱啊,能贴一小部分代码出来看么?


恩,

/*IDL file*/
interface SBObj
{
void func1(in wstring a);
};
interface Deal
{
void openQuery(in SBObj SBO,
in wstring Name) raises (UserDefinedException)
}

/*Server Side*/
public class SBObject extends SBObjPOA
{
public void func1(String a)
{
}
}

public class DealImpl extends DealPOA
{
public void openQuery(SBObj SBO,String Name)
{
/*here need to convert from SBObj to SBObject*/
}
}


//在code里面 SBObj,SBObjPOA,DealPOA等都是idl2java生成出来的


我理解lz的意思是服务器还要当客户端使用,客户端也还是一个服务器.这样肯定可以实现(我实现过)
可以尝试一下**Helper.narrow()方法试一下.


narrow方法的返回值,类型只是SBObj类型
而这个类型,我已经可以得到了,作为openQuery的参数
idl2java自动生成了

我想要得到的是SBObject类型,是SBObjPOA的子类


我现在的问题就是

我通过corba在client端获得了一个server端的映射

当我把它作为参数传回去server端的时候

server端能不能认出来,这个就是原来我给出去的那个class

对他能做什么操作


这个没有尝试过,也不知道能不能实现,帮你定一下了只能.


well...
这个问题最终找到了解决的方法
用相关的poa的reference_to_servant方法,可是转换

作为一个总结


不知道lz是否还关注
想看下调用reference_to_servant附近5行的代码,不知可否?


↑返回目录
前一篇: 没想到竟然无人能答
后一篇: hibernate查询问题,回答均有分,达人指教