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