是否有一种简单的方法可以检查对象是否仍然绑定到“tnameserv”? 绑定一个对象后,“tnameserv”进程可能会崩溃,被杀死,...我希望我的应用程序验证我之前绑定的对象是否仍然绑定。
答案 0 :(得分:1)
假设您正在使用Oracle Java ORB,为什么不使用它们提供的持久名称服务而不是瞬态tnameserv?听起来您的应用程序需要持久注册引用,因此尝试从瞬态命名服务获得类似持久性的行为可能是一个死胡同。
顺便说一句,您可以使用任何供应商的COS命名服务,而不仅仅是Oracle提供的服务(甚至也不必用Java编写)。例如,免费的JacORB名称服务器可以在持久模式下运行,允许您注册的引用在服务重新启动或崩溃后继续存在。
在任何情况下,您的问题的答案取决于您是否从客户或服务器的角度提出问题。使用命名服务的服务器不需要检查已经在其中注册的现有引用 - 它应该只是调用rebind()
来更新注册。如果已经没有任何内容,则会添加引用。如果那里有一个,它将被新值覆盖。
如果您从客户的角度询问此问题,您应该记住,命名服务就像电话簿。如果客户在那里没有找到它需要的注册,那么它几乎已经死在水中,除非它能找到其他合适的对象,可以用来提供你需要的服务。最好让你的客户在那时失败,而不是试着猜测如何弥补真正灾难性的情况。