Ich erstelle eine Springboot-Anwendung mit OpenJPA.Dynamische Erstellung einer Datenquelle in SpringBoot OpenJPA-Anwendung (Multitenancy mit OpenJPA implementieren)
Meine Anforderung ist, dass ich mich dynamisch mit mehreren Datenquellen verbinden muss und die Anmeldeinformationen der Datenquelle zur Laufzeit erhalten, indem ich einige Ruhe-Endpunkte aufrufen. Hier
ist die Controller-Klasse:
@RestController
public class StationController {
@Autowired
BasicDataSource dataSource;
Ich habe einen Dienst, der mir die jdbc_url auf den Kundennamen abhängig zurück:
public String getDSInfo(String customername){
// code to get the datasource info (JDBC URL)
}
Meine Fragen sind:
Gibt es einen Weg, auf dem ich Datenquellen zur Laufzeit erstellen kann, indem ich Datenquellenanmeldeinformationen durch Aufrufen von so erhalten mir anderen Dienst (der die Kundennummer übernimmt und die kundenspezifische Datenquelle zurückgibt)?
Da es sich bei meiner Anwendung um eine webbasierte Anwendung handelt, greifen viele Kunden gleichzeitig darauf zu, um so viele verschiedene Datenquellen zu erstellen und zu verarbeiten.
HINWEIS:
Der Code wird nur Informationen über die kundenspezifische Datenquelle erhalten, indem einen Dienst zur Laufzeit abfeuern, so kann ich nicht die Datenquelle Anmeldeinformationen in der XML-Konfigurationsdatei codieren.
Ich habe einige Implementierungen mit Hibernate gefunden, aber ich benutze Springboot mit OpenJPA. Brauche also OpenJPA-spezifische Hilfe.
Lassen Sie mich es versuchen. Funktioniert diese Lösung auch, wenn mehrere Kunden gleichzeitig auf die Anwendung zugreifen? –
Ja, das ist die Idee. Ein bestimmter Benutzer könnte die App erreichen, indem er einen kundenspezifischen Code an die URL übergibt.Wenn sie sich anmelden, wird dies auf einen lokalen Thread gesetzt, und von da an, wenn sie über ihren benutzerdefinierten Entitätsmanager auf Daten zugreifen, greift der Entitymanager die Datenquelle des Kunden aus der Karte. Die Magie ist die Verwendung eines kundenspezifischen Bereichs. Dies alles wird in den letzten 10-15 Minuten des Videos erklärt. – PaulNUK
Danke für die Links, gelten diese auch für die Spring-OpenJPA-Anwendung? –