Zum Inhalt springen

Konfiguration

Kurzantwort: CDMS wird über Spring-Properties bzw. Umgebungsvariablen konfiguriert. Die wichtigsten Präfixe sind cdms.database.* (Persistenz und Mandanten), codamai.cdms.api.* (Formate, Create-Read-Modus), codamai.cdms.persistence.file.* (Dateiablage) und die cias_*-Variablen (Keycloak). Der Betriebsmodus cdms.tenant.mode entscheidet über Mandantentrennung und darf nach der Initialisierung nicht mehr gewechselt werden.


PropertyTyp / StandardBedeutung
driverPflichtJDBC-Treiber
urlPflichtJDBC-URL, Platzhalter {tenant} wird ersetzt
user, passwordZugangsdaten
poolSize20HikariCP-Poolgröße pro Mandant
autoUpdatetruehbm2ddl.auto=update statt validate
showSqlfalseSQL-Ausgabe
hibernateDialect""Dialekt erzwingen
autoCreateTenantDatabasefalsefehlende Mandanten-Datenbank anlegen
factoryCacheSize100LRU-Größe des EntityManagerFactory-Caches
factoryCacheIdleSeconds1800Räumung nach Leerlauf
tenantCacheTtlSeconds3600Cachedauer der Tenant-Katalog-Entscheidung
logRoutingfalseRouting-Entscheidungen protokollieren
migrationModeHIBERNATE | FLYWAYSchemaverwaltung
migrationSystemLocationclasspath:db/migration/systemFlyway-Skripte System-DB
migrationTenantLocationclasspath:db/migration/tenantFlyway-Skripte Mandanten-DB

Ob eine Installation ihre Daten nach Mandant trennt, ist eine systemweite Angabe und gehört keinem Speicher allein. Sie wird aus cdms.tenant.mode (CDMS_TENANT_MODE) gelesen — von der Datenbank wie von der Dateiablage.

PropertyTyp / StandardBedeutung
cdms.tenant.modeSINGLE | MULTI (Pflicht)eine Datenbank und ein Verzeichnisbaum, oder je eines pro Mandant

Es gibt bewusst keinen Standardwert: ein fehlender Wert verhindert den Start, statt still eine Trennung abzuschalten, die jemand erwartet hat.

Die frühere cdms.database.mode (CDMS_DATABASE_MODE) ist ein veralteter Alias. Sie wird noch gebunden, damit Bestandsinstallationen starten, aber nur noch mit cdms.tenant.mode verglichen: Widersprechen sich beide, verweigert die Anwendung den Start — eine nach Mandant getrennte Datenbank neben einer ungetrennten Dateiablage ist ein Defekt, keine Konfiguration. Zum Migrieren CDMS_TENANT_MODE setzen und CDMS_DATABASE_MODE entfernen.

PropertyStandardBedeutung
formatDateTimeyyyy-MM-dd HH:mm:ssParsing im PATCH
formatDateyyyy-MM-dd
formatTimeHH:mm:ss
createReadModeSTRICTSTRICT oder LENIENT, siehe Transaktionen

Für Suchfilter und Sortierung gelten eigene Formate: app.format.datetime, app.format.date, app.format.time (gleiche Standards).

PropertyBedeutung
basePathWurzelverzeichnis der Blob-Ablage, Pflicht. Fehlt sie, startet die Anwendung nicht. Wird auf abschließenden / normalisiert.

Im Container ist das typischerweise der Mount-Punkt eines PVC (z. B. /files).

VariableBedeutung
cias_urlKeycloak-Basis-URL
cias_realmRealm
cias_clientClient-ID, deren resource_access-Rollen als Fachrollen gelten
cias_client_secretSecret für den Token-Exchange
mcp_public_base_urloptional: extern sichtbare Basis-URL für den MCP-Endpunkt hinter einem Proxy
Property / VariableStandardBedeutung
STRICT_MODE (Umgebungsvariable)trueVoreinstellung des Strict Mode pro Request
codamai.debugtrueStacktrace in Fehlerantworten aufnehmen
cdms_hub_query_parallelism8parallele Worker je Hub-Abfrage über abstrakte Modelle; muss zur Poolgröße passen

cdms_hub_query_parallelism und cdms.database.poolSize hängen zusammen: jeder Worker belegt ein bis zwei Verbindungen. Ein zu hoher Wert bringt den Pool zum Erliegen.

management:
endpoints:
web:
exposure:
include: health, info, configprops, metrics
spring:
threads:
virtual:
enabled: true
codamai:
debug: false
cdms:
api:
createReadMode: STRICT
persistence:
file:
basePath: /files/
cdms:
database:
mode: MULTI
driver: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://db:3306/{tenant}
poolSize: 20
autoCreateTenantDatabase: false
migrationMode: HIBERNATE
ZweckWert
Anwendung8080
Management/Actuator8081
LivenessGET :8081/actuator/health/liveness
REST-API/api/rest/**
OpenAPI-Gruppecdms-public
MCP/api/mcp