Ich benötige eine Möglichkeit, die Persistenzeinheit in einem EJB dynamisch anzugeben.Name der dynamischen JPA-Persistenzeinheit
Vereinfachtes Beispiel:
Ich habe eine Anwendung mehrere Datenbanken als Datenspeicher verwenden. Jeder der Datenspeicher ist strukturell identisch. Je nachdem, welcher Client mit der Anwendung verbunden ist, muss ich auf die Daten von einen bestimmten Datenspeicher zugreifen.
Daher würde ich gerne die gleiche EJB verwenden, so dass die Geschäftslogik nicht dupliziert wird, , aber dann wählen Sie einfach die richtige Persistenzeinheit basierend auf dem Client.
Bis zu diesem Punkt habe ich den Entity Manager nur direkt mit dem harten Namen der Persistenzeinheit injiziert. Gibt es eine Möglichkeit, den Entity Manager dynamisch mit der erforderlichen Persistenzeinheit, die an das EJB angeschlossen ist, zu injizieren? Können Persistenzeinheiten zur Laufzeit dynamisch hinzugefügt werden? Ich muss derzeit die Persistenzeinheit in der Datei persistence.xml angeben. Idealerweise möchte ich Pools auf dem Server jdbc/db1, jdbc/db2 usw. während der Ausführung des Systems erstellen. Dann fügen Sie einfach diese an die zentrale Kundendatenbank und verknüpfen es mit einem Client, so dass, wenn der Client eine Verbindung herstellt, wird es den Namen des Pools überprüfen, und es verwenden, wenn die EJB-Aufruf der Persistenzeinheit zu bekommen.
Ich bin immer noch wirklich neu in Java EE Entwicklung. Jede Hilfe würde sehr geschätzt werden.
Dies ist fast das, was ich brauche, aber ich muss immer noch jede Persistenz-Einheit im Voraus in der SharedEntityManagerFactory definieren. Ich hätte gerne in der Lage sein, sie dynamisch hinzuzufügen, so dass keine Codeänderungen erforderlich sind und keine erneute Implementierung erforderlich ist. Ich kann einfach die Details der Persistenzeinheit in der Hauptdatenbank speichern und bei Bedarf mit dem Client verknüpfen. Aber das ist schon viel besser, als jeden Datenspeicher als separaten Webservice zu implementieren. Viel weniger Aufwand. Der Webservice hat den zusätzlichen Vorteil, dass er die URL in db speichern und dynamisch verwenden kann. Ich muss die Optionen aufheben. – likenoother