Ich habe eine ziemlich standardmäßige Java EE6-Webanwendung, die JPA 2 mit Dependency-Injection-Verbindung zu einer MySQL-Datenbank verwendet, und alles funktioniert gut. Was ich jetzt tun möchte, ist, dass diese Anwendung mit den Datenbanken anderer Anwendungen interagiert, die wir auf einer Kundenseite installiert haben - im Wesentlichen als ein einziger Kontrollpunkt für unsere anderen Anwendungsinstallationen.
Was mich beschäftigt, ist, wie ich die Interaktion mit den anderen Datenbanken am besten durchführen kann. Im Idealfall möchte ich für jede Installation einen EntityManager erstellen und mit JPA interagieren, aber ich sehe keine Möglichkeit, dies einzurichten. Ich kann zum Beispiel 5 Installationen (und somit Datenbanken) eines Anwendungstyps haben, und die Hauptsteueranwendung wird bis zur Laufzeit über die anderen Installationen nicht Bescheid wissen. Dies scheint die Verwendung der Abhängigkeitsinjektion eines EntityManagers und aller automatischen Transaktionsdemakationen usw. auszuschließen. Die Alternative besteht darin, einfach eine DataSource zu erstellen und die Interaktionen manuell durchzuführen. Dies ist zwar flexibel, erfordert jedoch deutlich mehr Aufwand.
Also, meine Frage ist wirklich, wie kann ich dieses Problem am besten angehen?
Ich untersuche das auch, und bis jetzt habe ich den folgenden Blogpost gefunden, der einen Weg beschreibt, wie man das macht Ссылка :
Alle Ihre Datenbankeigenschaften wurden aus persistance.xml entfernt
%Vor%Ihre Java-Datei, in der Sie den EntityManager konfigurieren, wurde geändert, in unserem Fall TestApplication.java
%Vor%Tags und Links java jpa multiple-databases