Как настроить и найти сервис 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.

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