Я смущен о видимости класса в OSGi. Я бег Apache Felix и загрузки следующих связок:В среде OSGi, как настраиваются классовые классы и загрузчики классов?
antlr
,asm
,jpa
иcore
пучков на EclipseLink от- OSGi-Fied банки для
javax.persistence
1,99 - OSGi-Fied банки с
com.mysql.jdbc
водитель - пучок из моих собственных, который содержит аннотированные классы сущностей и
persistence.xml
- другой сверток из моих собственных, что вызывает
Persistence.createEntityManagerFactory(String, Map)
Теперь я смущен тем, какой пакет должен иметь возможность видеть драйвер MySQL. Я думал, что это будет набор, создающий EntityManagerFactory, но я получаю ошибки ClassNotFound при импорте в этот манифест. Затем я попытался импортировать его из манифеста пакета eclipselink jpa
, но опять-таки неправильно. Только когда я импортирую его из манифеста пакета, содержащего блок персистентности (классы объектов и persistence.xml
), он работает.
Так что, по-видимому, драйвер базы данных просматривается класс-загрузчиком для пула ПУ, но для меня это не имеет смысла. Что происходит?
Я не могу найти простой документации для этого. These slides дают некоторые подсказки, но не совсем исчерпывающие.
Я передаю водитель как свойство createEntityManagerFactory, но я предполагаю, что это то же самое? Мне почему-то это кажется странным. Разве это не должен быть поставщик постоянства, который обрабатывает все специфические вещи? –
Для всех поставщиков постоянства требуется драйвер DB, который может обрабатывать интерфейс JDBC. Таким образом, вы держите связь между пучками низко. Выбор какой БД для использования является специфичным для приложения, поэтому он должен быть частью вашего кода/config. Это базовая модель с OSGi: в качестве контракта используются интерфейсы, а некоторые пакеты обеспечивают реализацию домена или приложения. – SteveD