在 Java CORBA 中传递 DII 参数
Posted
技术标签:
【中文标题】在 Java CORBA 中传递 DII 参数【英文标题】:Pass DII out-argument in Java CORBA 【发布时间】:2013-04-13 13:56:02 【问题描述】:我有以下 IDL 接口:
interface ItemA : Item
void actionA(in float a, out long b);
;
在我的 Java 实现中,我想动态调用操作 actionA
(使用 DII)。这里的item
对象实现了Item
接口,因此对actionA
一无所知。这是sn-p:
org.omg.CORBA.Request r = item._request("actionA");
r.add_in_arg().insert_float(a);
// add the out argument
r.set_return_type(orb.get_primitive_tc(org.omg.CORBA.TCKind.tk_void));
r.invoke();
// get the out argument result
如何填写这些空白?我尝试了各种方法,主要是 r.add_out_arg()
的不同用途,但似乎没有任何效果。非常感谢您的帮助!
【问题讨论】:
【参考方案1】:试试这个:
org.omg.CORBA.Request r = item._request("actionA");
r.add_in_arg().insert_float(a);
Any val = r.add_out_arg();
val.type(orb.get_primitive_tc(TCKind.tk_long));
r.set_return_type(orb.get_primitive_tc(org.omg.CORBA.TCKind.tk_void));
r.invoke();
if( r.env().exception() == null )
System.out.println("returned: " + r.arguments().item(1).value().extract_long());
它对我有用(我已经在某个地方看到过这个 idl...:P)。
【讨论】:
奇怪你在 SO 上偶然发现了来自你自己大学的人。顺便提一句。你当然意识到,现在有点太晚了:)以上是关于在 Java CORBA 中传递 DII 参数的主要内容,如果未能解决你的问题,请参考以下文章