Проверьте, привязан ли объект к NameService (tnameserv)

Есть ли простой способ проверить, привязан ли объект к "tnameserv"? После того, как вы привяжете объект, процесс "tnameserv" может произойти сбой, быть убитым, и я хочу, чтобы мое приложение проверило, связан ли объект, который я связал ранее, по-прежнему.

1 ответ

Решение

Предполагая, что вы используете Oracle Java ORB, почему бы не использовать службу постоянных имен, которую они предоставляют, а не временный tnameserv? Похоже, что вашему приложению нужна постоянная регистрация ссылок, поэтому попытка получить постоянное поведение от временной службы именования, скорее всего, станет тупиком.

Кстати, вы можете использовать COS Naming Service любого поставщика, а не только тот, который предоставляется Oracle (и даже не должен быть написан на Java). Например, бесплатный сервер имен JacORB может работать в постоянном режиме, что позволяет зарегистрированным ссылкам пережить перезапуск или сбой службы.

В любом случае ответ на ваш вопрос зависит от того, спрашиваете вы его или нет с точки зрения клиента или сервера. Серверу, использующему Службу именования, не нужно проверять наличие уже зарегистрированной ссылки, вместо этого он должен просто вызвать rebind() обновить регистрацию. Если там уже ничего нет, ссылка будет добавлена. Если там есть один, он будет перезаписан с новым значением.

Если вы спрашиваете об этом с точки зрения вашего клиента, вы должны помнить, что служба именования похожа на телефонную книгу. Если клиент не находит там необходимую ему регистрацию, он в значительной степени мёртв в воде, если не может найти другие подходящие объекты, которые могут быть использованы для предоставления необходимых вам услуг. Вероятно, лучше, чтобы ваш клиент потерпел неудачу в этот момент, чем пытаться угадать, как компенсировать то, что на самом деле является катастрофическим сценарием.

Другие вопросы по тегам