等待对象在 CORBA 命名服务中绑定

Posted

技术标签:

【中文标题】等待对象在 CORBA 命名服务中绑定【英文标题】:Waiting for object to bind in CORBA Naming Service 【发布时间】:2012-10-05 20:11:34 【问题描述】:

我想等待服务器将自己绑定到 CORBA 命名服务。 首先我尝试使用以下代码,它正在轮询命名服务

Object expectedObj = null;
do

   try  expectedObj = ncRef.resolve_str("expectedToBeInNameService");  
   catch (NotFound e) 
   Thread.sleep(2000);
 while(expectedObj == null;

我最大的问题是这个阻塞。等待它非阻塞的最简单方法是什么?

【问题讨论】:

在等待那个对象时你想做什么? 【参考方案1】:

您可以在另一个线程中等待并使用回调来通知“原始”线程或对象对命名服务的请求已解决。

class WaitThread extends Thread 
    CallBackObj callback;

    public WaitThread(CallBackObj callback) 
      this.text = callback;
      // assume CORBA stuff initiated here
    

    public void run() 
      Object expectedObj = null;
      do
      
         try  expectedObj = ncRef.resolve_str("expectedToBeInNameService");  
         catch (NotFound e) 
         Thread.sleep(2000);
       while(expectedObj == null;
      callback.notifyMethodExample();
    
  

调用者必须实现接口CallBackObj,并会创建这个线程

WaitThread wt = new WaitThread(this);
wt.start();


interface CallBackObj 
 void notifyMethodExample();


【讨论】:

能给个代码示例吗?我对java线程不熟悉。

以上是关于等待对象在 CORBA 命名服务中绑定的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 CORBA 服务器没有绑定?

Corba NamingContextExtStub.resolve

在 Java 中运行嵌入式 CORBA 命名服务

CORBA 架构体系指南(通用对象请求代理体系架构)

CORBA 架构体系指南(通用对象请求代理体系架构)

如何将 TAO 事件通道绑定到特定的命名服务