Как настроить и найти сервис OSGi через JNDI
Я создал OSGi-пакет, используя активатор комплекта, и развернул его в karaf, но в karaf, если вы дадите jndi: bind-id service-name, он не будет существовать после завершения работы консоли karaf, поскольку он не является постоянным.
Я хочу зарегистрировать службу в OSGi с помощью JNDi, который является постоянным, то есть я могу получить доступ с помощью JNDI.
Я регистрирую сервис как под,
bundleContext.registerService(myFramework.class.getName(),FrmFactory.initFramework(ctx), null);
Context ctx = null;
try
{
ctx = new InitialContext();
ctx.bind("service/myframework", frmFactory.initFramework(ctx));
}
Пожалуйста, предложите это правильный путь, если нет, пожалуйста, предложите, потому что я получаю исключение как
errorMessage = jndiobjectBindError, errorMessage = Не удалось связать локальный объект в jndi. Имя объекта:service/portframework, причина = javax.naming.NotContextException: промежуточный контекст Myfr amework не существует
1 ответ
Самый простой способ получить доступ к сервисам с помощью jndi в karaf - это использовать функцию "jndi". Он обеспечивает доступ ко всем службам OSGi с использованием jndi.
В вашем случае jndi название вашей службы будет:
osgi:service/<FQN of myFramework>
Так что вам просто нужно зарегистрировать свой сервис и вам не нужно заботиться о регистрации в jndi.