Привязать объект к нескольким NameServices
Я пытаюсь привязать свой CORBA-сервис к нескольким NameServices. Код выглядит следующим образом (упрощенно):
org.omg.CORBA.Object objRef = orb.string_to_object("corbaloc::127.0.0.1:1337,:127.0.0.1:1338/NameService");
NamingContextExt ctx = NamingContextExtHelper.narrow(objRef);
NameComponent path[] = { new NameComponent("toto", "") };
ctx.rebind(path, new MyObject());
Библиотеки VisiBroker 8.5 принимают URI corbaloc, но служба привязана только к порту 1337.
РЕДАКТИРОВАТЬ: я знаю, что ручная привязка к нескольким NameServices должна работать, но URI corbaloc должен делать эту работу.
Любой эксперт по CORBA здесь?
Спасибо!
1 ответ
К сожалению, многоадресные URI-адреса corbaloc ведут себя не так, как вам хотелось бы. Дополнительные адреса просто рассматриваются как резервные копии на случай сбоя. Единственный, кто будет "выбран", будет первым, кто ответит в списке. Вот некоторая документация, которая описывает его поведение.
Вам придется вручную привязать ссылку на свой объект в каждую службу имен, если только ваша реализация службы имен не поддерживает какую-либо репликацию (я не уверен, что Visibroker поддерживает).