Apache Cayenne defaultCatalog, заданный средой var

Я хочу использовать веб-приложение Apache Cayenne Java в контейнере Docker, поскольку запущено несколько экземпляров, и я хотел бы настроить их с помощью переменных среды. Теперь у меня проблема, что я использую одну центральную базу данных с разными каталогами для каждого экземпляра/контейнера. Есть ли возможность установить defaultCatalog (который определен в xxx.map.xml) с помощью env. переменная?

с уважением Маркус


person Meex    schedule 23.01.2020    source источник


Ответы (1)


Каталог «по умолчанию» в Cayenne управляет только тем, какой каталог назначается вновь созданным DbEntities в Modeler, и не влияет на поведение во время выполнения.

Теперь в среде выполнения в большинстве баз данных каталог по умолчанию управляется через URL-адрес подключения (т. е. на уровне JDBC за пределами Cayenne). Например.

jdbc:mysql://127.0.0.1/database
jdbc:postgresql://127.0.0.1/database

В примерах MySQL и Postgres «база данных» — это имя базы данных (которое совпадает с каталогом).

Итак, что вам нужно сделать, это оставить каталог пустым для всех Cayenne DbEntities (а не только каталог «по умолчанию» DataMap), а затем указать URL-адрес подключения для каждого контейнера Docker с соответствующим именем БД. Один из способов контролировать это — использовать -Dcayenne.jdbc.url свойство запуска< /а>.

person andrus_a    schedule 27.01.2020