2010-11-23 3 views
4

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

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

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

Благодаря

Dan

ответ

1

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

0

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

Смежные вопросы