existdb: определить сервер базы данных - PullRequest
0 голосов
/ 23 мая 2018

У нас есть несколько (разработчик) серверов баз данных existDb и несколько промежуточных / производственных серверов.

Каждый имеет свою собственную конфигурацию, которая немного отличается.

Нам нужно выбрать, какиеКонфигурация для загрузки и использования в запросах.

Конфигурация должна храниться в файле XML внутри хранилища.

Однако при синхронизации содержимого серверов используется один записанный XMLфайла недостаточно, поскольку он перезаписывается при копировании с другого сервера.

Для этого нам нужно физическое имя фактического сервера базы данных.

Единственная найденная функция, request:get-server-nameэто не совсем стабильно, поскольку к одному серверу eXist можно получить доступ через несколько различных URL-адресов (локальный, внутренний или внешний).Однако это приводит к ненужному дублированию конфигурации, по одному для каждого внешнего URL-адреса ...

(Доступ к некоторым локальным файлам в файловой системе небезопасен и не быстр.)

Как получить физическое имя сервера existDb из XQuery?

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

Если я правильно понимаю, вы в основном хотите иметь возможность получить имя хоста или IP-адрес сервера из XQuery.Если функции в модуле XQuery Request работают не так, как вам хотелось бы, то другим вариантом было бы установить свойство системы Java при запуске eXist-db.Это системное свойство может быть внутренним DNS-именем или IP-адресом вашего сервера, например: -Dour-server-name=server1.mydomain.com

Из XQuery вы можете затем прочитать это свойство системы Java, используя util:system-property("our-server-name").

0 голосов
/ 24 мая 2018

Извините, но я не до конца понимаю ваш вопрос. Вы говорите о существующем по умолчанию файле conf.xml или о своем собственном файле конфигурации, который необходимо сохранить в репозитории VCS?Должен ли xquery выполняться в одном экземпляре и вызывать событие во всех остальных, или только в некоторых, или ...?Без некоторого кода трудно понять, почему и когда что-то перезаписывается.

вы можете попробовать console: jmx-token, который не меняется в зависимости от URL (по крайней мере, не должен)

Также вам может оказаться гораздо проще использовать подход, основанный на докере.Либо с несколькими экземплярами, скоординированными с помощью docker-compose, либо чтобы отдельные конфиги не мешали друг другу при переходе от dev к стадии подготовки к производству https://github.com/duncdrum/exist-docker

...