Проблема в вашем случае заключается в том, что jdbc использует класс из среды java для поиска драйвера базы данных (DriverManager.getConnection). Это не может работать, поскольку драйвер базы данных недоступен из системного загрузчика классов (который загружал класс DriverManager).
Способ, который работает в OSGi, заключается в том, чтобы вместо этого использовать DataSource: http://docs.oracle.com/javase/tutorial/jdbc/basics/sqldatasources.html. Там вы просто создаете источник данных, используя новые, и это, конечно, работает. Проблема в том, что он заставляет ваш набор пользователей зависеть от конкретного драйвера DB. Поэтому наилучшей практикой является создание центра данных DataSource и публикация его как службы.
Более подробную информацию вы найдете в моем учебном пособии по Apache Karaf DB (http://www.liquid-reality.de/display/liquid/2012/01/13/Apache+Karaf+Tutorial+Part+6+-+Database+Access).
КПП. В общем, такие заводы находятся там, где библиотеки не работают в OSGi. Каждый lib изобретает другую и другую заводскую систему, и большинство из них несовместимы с ограниченными загрузчиками классов OSGi. К счастью, большинство libs теперь готово OSGi. В большинстве случаев это просто означает, что вы также можете вызвать завод с конкретным объектом, который вы можете получить, используя службу OSGi.
Спасибо за информацию ... Я нашел ее очень полезной – JLove