2010-11-23 7 views
4

Ich habe eine Menge anderer Fragen bei stackoverflow bezüglich meines Problems gelesen, aber ich habe keine passende Lösung gefunden.Bewährte Methode zur Bereitstellung von EntityManager in OSGI-Anwendungen

Ich entwickle eine OSGI-Anwendung (Equinox) und JPA (EclipseLink) verwenden. Jetzt frage ich nach dem besten Weg, den EntityManager in die Bündel zu bekommen, die es benötigen. Wenn ich die EntityManagerFactory als Service veröffentliche und damit den Entity Manager benutze, muss ich die persistence.xml in jedem Bundle bereitstellen, in dem ich den EntityManager verwende. Wenn ich eine Benutzerklasse schreibe, die eine Instanz eines EntityManger teilt und sie als Dienst veröffentliche, habe ich Angst, Probleme mit der Thread-Synchronisation zu bekommen.

Gibt es Best Practices für die Bereitstellung des EntityManager bei Verwendung von OSGI und JPA?

Dank

Dan

Antwort

1

In Eclipse wenn innerhalb OSGi verwendet haben Sie in dem erklären, bündeln die persistence.xml durch Zugabe gefunden werden kann „JPA-PersistenceUnits: myPersistenceUnit“ MANIFEST.MF die auf das Bündel, in dem der persistence.xml befindet. EclipseLink sucht nach dieser Deklaration und verwendet den Klassenlader dieses Pakets, um die Datei persistence.xml zu erhalten. Dann können Sie die EntityManagerFactory als Service veröffentlichen und müssen die Datei persistence.xml nicht in jedem Bundle freigeben, das den Service verwendet. Aber ich denke, das funktioniert nur mit EclipseLink.

0

verwendete ich this blog mit OpenJPA Setup zu bekommen und ein separates Modell Bündel ohne jedes Bündel Client über persistence.xml zu kennen. Da EclipseLink ein JPA-Provider ist, sollte es ungefähr das gleiche Setup sein. Achten Sie darauf, die example code zu betrachten, die am Ende des Blogs verlinkt ist.

Verwandte Themen