Лучшая практика для обеспечения EntityManager в приложениях OSGI - PullRequest
4 голосов
/ 23 ноября 2010

Я прочитал много других вопросов в stackoverflow, касающихся моей проблемы, но я не нашел правильного решения.

Я разрабатываю приложение OSGI (Equinox) и использую JPA (EclipseLink).Теперь я прошу лучший способ получить EntityManager в комплектах, которые требуют этого.Когда я публикую EntityManagerFactory как сервис и использую его для получения EntityManger, я должен предоставить файл persistence.xml в каждом пакете, где я использую EntityManager.Когда я пишу класс utitlity, совместно использующий один экземпляр EntityManger, и публикую его как сервис, я боюсь столкнуться с проблемами синхронизации потоков.

Есть ли какие-либо рекомендации по обеспечению EntityManager при использовании OSGI и JPA?

Спасибо

Дан

Ответы [ 2 ]

1 голос
/ 01 декабря 2010

В EclipseLink при использовании в OSGi вы должны указать, в каком пакете можно найти файл persistence.xml, добавив « JPA-PersistenceUnits: myPersistenceUnit » в файл MANIFEST.MF пакета, в котором persistence.xmlрасположен.EclipseLink будет искать это объявление и будет использовать загрузчик классов этого пакета, чтобы получить файл persistence.xml.Затем вы можете опубликовать EntityManagerFactory как Сервис, и вам не нужно предоставлять общий доступ к persistence.xml в каждом пакете, используя сервис.Но я думаю, что это работает только с EclipseLink.

0 голосов
/ 29 ноября 2010

Я использовал этот блог для настройки OpenJPA и отдельных комплектов моделей, при этом каждый клиентский комплект не знал о persistence.xml. Поскольку EclipseLink является провайдером JPA, он должен быть примерно таким же. Обязательно посмотрите пример кода , который связан в нижней части блога.

...