java - 在 Java CORBA 中传递 DII 争论

标签 java corba idl

我有以下 IDL 接口(interface):

  interface ItemA : Item {
     void actionA(in float a, out long b);
  };

在我的 Java 实现中,我想动态调用操作 actionA(使用 DII)。这里的 item 对象实现了 Item 接口(interface),因此对 actionA 一无所知。这是片段:

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() 的不同用法,但似乎没有任何效果。我非常感谢您的帮助!

最佳答案

试试这个:

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)。

关于java - 在 Java CORBA 中传递 DII 争论,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15988572/

相关文章:

java - 如何使用 XMLStreamReader 获取大文件的进度

java - Android xml获取节点值null

java - 如何从存储在 Arraylist 中的 Hashmap 中搜索并提取值

java - 使用信号量的死锁

c++ - 使用VS 2010构建ACE和TAO(CORBA)时发生许多错误

c++ - CORBA AMI 调用不产生回调?

java - CORBA:Java 的服务器工具不允许我注册服务器类

java - 将 IDL 枚举解析为 Java 枚举

java - 如何使用 IDL 将对象作为参数传递

c++ - 在 Windows 中通过 RPC 发送 UDT