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 ответа:
Какую версию 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, файлы сопоставления, все библиотеки) находятся в одном пакете. Он не может получить доступ к ресурсам в других пакетах.
Пожалуйста, Также смотрите мой ответ в этой теме.