OSGi и Hibernate-не подходит драйвер


У меня сложилась следующая ситуация. Я использую Apache Felix как реализацию службы OSGi и Apache Karaf как контейнер OSGi. В karaf есть пакет, который должен сохранять некоторые данные через hibernate в базу данных, но я всегда получаю SQLException: No Suitable Driver found. Я развернул mysql-connector-bundle в karaf. Проблема, на мой взгляд, в том, что hibernate не импортирует ни mysql-driver-packages, ни мои классы, которые должны быть сопоставлены. Но я не знаю, как это исправить. Я знаком с eclipse rcp, где buddy-policy исправляет такие проблемы, есть ли лучшая практика для этой задачи для felix и karaf?

2 4

2 ответа:

Какую версию hibernate вы используете? Только начиная с Hibernate 4, hibernate знает о загрузчиках классов OSGi, и он все еще не имеет полной поддержки OSGi. См., например, https://hibernate.onjira.com/browse/HHH-7527 , который запланирован для гибернации 4.2.

Мы использовали Gemini JPA с eclipselink вместо этого в качестве поставщика JPA в OSGi.

В экосистеме karaf есть Овен JPA, который в основном используется с OpenJPA. Смотрите какие провайдеры JPA поддерживаются Apache Aries Управляемый JPA?

Hibernate не может получить доступ к данным и классам do из других пакетов (по крайней мере, в версии 3.x; я не знаю о версии 4). Он легко работает только в том случае, если все (методы, использующие hibernate, pojos, файлы сопоставления, все библиотеки) находятся в одном пакете. Он не может получить доступ к ресурсам в других пакетах.

Пожалуйста, Также смотрите мой ответ в этой теме.