TenantIdentifier auf Controller-Ebene ändernJava

Java-Forum
Guest
 TenantIdentifier auf Controller-Ebene ändern

Post by Guest »

Wir implementieren Multitenancy in unserem Produkt und verwenden ein Datenbank-pro-Mandant-Entwurfsmuster. Wir folgten dem hier vorgeschlagenen Mandanten-pro-Anfrage-Muster, Spring Multitenant und Arbeitsbeispiel
Der obige Ansatz funktioniert gut, wenn wir bereits wissen, in welcher Datenbank/welchem ​​Schema wir suchen möchten.
Wir Wir haben einen Anwendungsfall, bei dem wir im Standardschema suchen müssen und, wenn es nicht gefunden wird, in einem anderen Schema suchen müssen. Sobald die Anfrage jedoch die Controller-Ebene erreicht, können wir den Kontext nicht mehr ändern und es bleibt nur das Standardschema erhalten. Ich habe es mit dem folgenden Code versucht -

Code: Select all

public class PersonController {

@Qualifier("otherSchemaDataSource")
private final DataSource otherSchemaDataSource;

public PersonDto getPerson(@PathVariable String personId) {
try {
return personService.getById(personId); //search with default schema
} catch (Exception e) {
// search in other schema if not found in default schema
TenantContext.setTenantInfo("other_schema");
Object oo = "other_schema";
sessionFactory.withStatelessOptions().tenantIdentifier(oo);
tenantIdentifierResolver.resolveCurrentTenantIdentifier();
multiTenantConnectionConfig.setDataSource(otherSchemaDataSource);
multiTenantConnectionConfig.getConnection("other_schema");
multiTenantConnectionConfig.setDataSource(ecmArchiveDataSourc);
return personService.getById(personId);
}

}
}

Bitte teilen Sie uns mit, ob wir dies zum Laufen bringen können, ohne für alle Schemas manuelle EntityManager/Sessionfactories hinzuzufügen

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post