Как заставить Apache Curator работать внутри пакета OSGi?

Я новичок в Zookeeper и Curator в целом.
Пытаюсь использовать Curator для подключения к Zookeeper и чтения-записи. Этот код отлично работает при выполнении из автономного приложения Java, но при внедрении в пакет OSGi ему не удается подключиться к серверу Zookeeper.

import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;

CuratorFramework curator = CuratorFrameworkFactory.newClient(
    someConnectionString, retryPolicy);
curator.start();
try {
    // returns false from OSGi, but true from standalone application
    curator.getZookeeperClient().blockUntilConnectedOrTimedOut();
}
catch (InterruptedException e) { ... }

Для пакета OSGi я включаю curator-framework-2.9.0.jar, curator-client-2.9.0.jar и другие зависимости в папке lib внутри пакета. Я не получаю никаких ошибок во время выполнения, поэтому все зависимости, похоже, обрабатываются.

Пытался найти, поддерживают ли библиотеки Curator платформу OSGi, и я вижу, что эта проблема возникла в 2013 году и помечена как решенная.

Я пропустил что-то очевидное здесь?


person Mrigank    schedule 29.11.2016    source источник
comment
Итак, этот вызов просто возвращает false, но нет информации о том, почему он не удался? Это делает практически невозможным диагностировать причину. Есть ли способ получить больше информации?   -  person Neil Bartlett    schedule 01.12.2016
comment
Спасибо за ответ :) Соглашусь, что информации очень мало, а больше я так и не нашел. Все еще застрял с этой проблемой, но попробовал несколько вещей, надеюсь, в конце концов найдет способ.   -  person Mrigank    schedule 06.12.2016
comment
@NeilBartlett, ты был на высоте!! Получение информации об ошибке было ключевым после этого, это была 5-минутная работа. Ниже разместил ответ. Спасибо!!   -  person Mrigank    schedule 14.12.2016


Ответы (1)


Оказалось, что это простой случай отсутствия импорта. Однако ClassNotFoundExceptions не появлялись на консоли, а поступали в log4j. Добавление ниже для инициализации log4j выявило отсутствующие импорты, такие как org.ietf.jgss.

import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.Logger;

BasicConfigurator.configure();
Logger.getRootLogger().setLevel(org.apache.log4j.Level.ALL);
person Mrigank    schedule 14.12.2016