2013-07-09 2 views
0

개체 참조를 여러 네임 서비스에 바인딩하는 응용 프로그램이 있습니다. 이러한 네이밍 서비스 중 하나가 다시 시작되면 그 것을 검색하고 내 참조를 다시 바인딩 할 수 있기를 바랍니다. 수 없습니다 내가 그 _non_existent을 (알고네이밍 서비스에 대한 연결을 어떻게 모니터합니까?

def check_connection(context): 
    try: 
     if CORBA.is_nil(context): 
      return False 
     if context._non_existent(): 
      return False 
    except CORBA.Exception: 
     return False 
    else: 
     return True 

) : 바로 지금, 내가 그 일을 생각할 수있는 유일한 방법은 주기적으로 다음 (필요한 omniORBpy 사용) 같은으로 이름 지정 서비스 컨텍스트 개체를 폴링하는 것입니다 "ping"작업으로 사용되지만 다른 방법으로 생각할 수는 없습니다. 끊임없이 서비스를 폴링하지 않아도 연결이 끊어졌을 때 콜백으로 알림을받을 수있는 방법이 있다면 좋을 것입니다. 거기에있는 모든 CORBA 전문가는 아이디어가 있습니까?

참고 : 네트워크 아키텍처 및 이름 지정 서비스 구현은 내 통제 범위를 벗어납니다. 따라서 영구적 인 네이밍 서비스로 전환하는 것은 불행히도 옵션이 아닙니다.

+0

이름 지정 서비스에 영향을 줄 수있는 경우 이름을 다시 지정하면 응용 프로그램에서 수신 할 수있는 이벤트 서비스로 이벤트를 보내도록 수정하는 것이 좋습니다. 또는 영구적 인 이름 지정 서비스를 사용하는 것이 좋습니다. –

답변

1

영구적 인 이름 지정 서비스를 사용할 수없는 경우 유일한 옵션은 폴링하는 것입니다. 그러나 아마도 참조를 확인하기보다는 다시 바인딩하거나 _non_existant()으로 전화를 걸려고합니다.

+0

답변 해 주셔서 감사합니다. 아주 좋은 점. 그것은 내가 이것을 복잡하게하려고 노력했을 것 같다! – mshildt

관련 문제