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