Если вы используете NamingService, вы должны использовать URL-адрес corbaname вместо URL-адреса corbaloc. Приведенное ниже будет работать, если ваша служба именования находится на порту 6969. Если «OurServiceHelper» находится на 6969, но служба NamingService находится на другом порту, вам нужно указать порт службы имен в приведенной ниже ссылке вместо 6969. объект сервера встроен в ior, возвращенный NamingService, поэтому его указывать не нужно.
"corbaname:10.1.1.200:6969#OurServiceHelper"
Re: Комментарий:
Сначала записка о IOR и обслуживании объектов. Если вы хотите, чтобы ваши обслуживаемые объекты были постоянными при перезапуске процесса, вы должны установить политику времени жизни PERSISTENT
в POA, который содержит объекты. Кроме того, IOR встраивает ip и порт сервера, поэтому, если вы хотите генерировать IOR, которые остаются согласованными при перезапусках, вы должны использовать статический IP-адрес и номер порта, а также политику постоянного времени жизни.
Служба имен упрощает работу, позволяя вам не беспокоиться о многих вещах. Пока служба имен доступна в известном месте, все ваши объекты сервера могут просто зарегистрироваться в службе имен, когда они будут созданы, и клиенты смогут получить к ним доступ, не зная, где они находятся.
Если вы решили не использовать службу имен, ваш код должен будет несколько измениться. Если вы используете corbaloc
url, то вы используете Interoperable Naming Service (INS). См .: http://java.sun.com/j2se/1.4.2/docs/guide/idl/INStutorial.html. Используя INS, вам необходимо использовать функциональность объекта NamingContextExt
. В частности, чтобы разрешить созданный вами URL-адрес corabloc, вы должны вызвать функцию NamingContextExt::resolve_str
и передать URL-адрес.