existdb:识别数据库服务器

时间:2018-05-23 11:07:07

标签: exist-db

我们有许多(开发人员)existsDb数据库服务器,以及一些临时/生产服务器。

每个都有自己的配置,略有不同。

我们需要选择要在查询中加载和使用的配置。

配置将存储在存储库中的XML文件中。

但是,在同步服务器的内容时​​,单个刻录的XML文件是不够的,因为在从其他服务器复制期间它会被覆盖。

为此,我们需要实际数据库服务器的物理名称。

找到的唯一功能request:get-server-name不太稳定,因为可以通过多种(本地主机,内部网或外部)URL访问单个eXist服务器。但是,这会导致不必要的配置重复,每个外部URL一个...

(访问文件系统中的某些本地文件并不安全且不快。)

如何从XQuery获取existDb服务器的物理名称?

2 个答案:

答案 0 :(得分:0)

对不起,但我不完全理解您的问题,您是否在谈论存在的默认conf.xml或您需要存储在VCS存储库中的自己的配置文件?是应该在一个实例上执行xquery并在所有其他实例中触发事件,还是只触发一些实例,或者......?没有一些代码,很难看出为什么以及何时被覆盖。

你可以尝试使用console:jmx-token,它不会因URL而异(至少它不应该这样)

另外,您可能会发现使用基于docker的方法更容易。通过docker-compose协调多个实例,或者在从开发阶段转移到生产阶段时保持各个配置不会相互干扰https://github.com/duncdrum/exist-docker

答案 1 :(得分:0)

如果我理解正确,您基本上希望能够从XQuery获取服务器的主机名或IP地址。如果XQuery Request模块中的函数没有按照您的意愿执行,那么另一个选项是在启动eXist-db时设置Java System属性。此系统属性可以是服务器的内部DNS名称或IP,例如:-Dour-server-name=server1.mydomain.com

然后,您可以使用util:system-property("our-server-name")