Я пытаюсь сделать упорство в среде OSGi (Karaf running Felix) с максимально возможной модулярностью. Я выбрал JDO для его добавленных функций (в основном групп извлечения) вместо JPA. Реализация - Datanucleus. Я использую Maven для создания всего проекта.Стойкость в среде OSGi с использованием Datanucleus JDO и чертежей
Поскольку у меня не было опыта работы с JDO или OSGi, было довольно сложно заставить любого из них работать. В настоящее время я могу выполнять JDO-сохранение в среде Java SE (модульные тесты работают без проблем), и я знаю, как предоставлять службы в среде OSGi с использованием контейнера планшета. Но я не могу заставить эти две вещи работать вместе. У меня проблемы с загрузкой.
Я не смог создать даже простое приложение, которое могло бы выполнять JDO-постоянство на Karaf (я пробовал следовать this tutorial, но использует Spring DM, и я не смог переписать его, чтобы использовать схему OSGi).
Что я больше всего путаются является:
- Какое значение следует установить свойство datanucleus.primaryClassLoader к?
- Какой класс загрузчик должен пройти в качестве аргумента для JDOHelper.getPersistenceManagerFactory метод?
- Какие пакеты явно импортировать с помощью maven-bundle-plugin? (Выглядит как по крайней мере javax.jdo, org.datanucleus.api.jdo и org.osgi.framework может потребоваться)
- Что другие связки нужно кроме ссылки на PersistenceManagerFactory?
Дополнительно:
- Можно ли отделить информацию от постоянства классов стоимости? Если я правильно понял, это было бы возможно только при использовании повышения времени исполнения, которое было бы очень сложным, если это вообще возможно.
- Можно ли определить взаимозависимые классы, совместимые с постоянством, в нескольких пакетах? Например, если пользователи определены в одном комплекте и их адреса в другом?
Я был бы чрезвычайно признателен за пример простого проекта с несколькими связями, который заботится о сохранении, используя только Datanucleus, JDO API и OSGi.
Спасибо
Спасибо. Я это проверю. – binarek
Также обратите внимание, что все пучки пакетов данных должны запускаться при запуске вашего пакета. Если это не так, вы получите ошибку (NullPointerException) в OSGIPluginRegistry. –