HsqlDB:重新加载 server.properties

Posted

技术标签:

【中文标题】HsqlDB:重新加载 server.properties【英文标题】:HsqlDB: Reloading server.properties 【发布时间】:2014-08-23 13:38:50 【问题描述】:

我有一个 HsqlDB 服务器正在运行,我需要动态地将 db 别名添加到 server.properties 文件中,而无需重新启动 db 服务器。是否可以?还是我需要关闭并重新启动整个 HsqlDB 服务器?

情况是我有一个 HsqlDB 服务器,其中包含许多数据库和许多 Java Web 应用程序,每个应用程序都使用自己的数据库。到目前为止,如果不重新启动整个 HsqlDB 服务器,我就无法创建 Web 应用程序的新实例。

我尝试使用以下 JDBC 网址:

jdbc:hsqldb:hsql://localhost;file:/srv/databases/db1
jdbc:hsqldb:hsql://localhost;file:/srv/databases/db2
etc...

但在这种情况下,所有 webapp 都连接到同一个数据库(即第一个连接的数据库)。我想在应用中使用:

jdbc:hsqldb:hsql://localhost/db1
jdbc:hsqldb:hsql://localhost/db2

我发现文档中没有提到这些“问题”。 我哪里做错了?

谢谢

【问题讨论】:

【参考方案1】:

您需要使用 server.remote_open=true 属性启动服务器。之后,需要包含 URL 以及文件路径。

指南中举例说明:

http://hsqldb.org/doc/2.0/guide/listeners-chapt.html#lsc_remote_open

【讨论】:

谢谢。但实际上我做到了。我的 server.properties 文件以 server.remote_open=true 开头。事实上,我可以远程打开一个数据库,但是当我尝试远程打开第二个数据库时,我获得了与第一个数据库的连接。【参考方案2】:

已解决:如果我使用以下 URL 连接:

jdbc:hsqldb:hsql://localhost/databasea;file:/srv/databases/databasea

jdbc:hsqldb:hsql://localhost/databaseb;file:/srv/databases/databaseb

那么这两个连接实际上连接到两个数据库。 我的问题是我对两者都使用了相同的别名(//localhost)。 现在我不需要 server.properties 文件中的别名了。

【讨论】:

以上是关于HsqlDB:重新加载 server.properties的主要内容,如果未能解决你的问题,请参考以下文章

备份还原后 hsqldb 没有变化,直到重新启动

关机后如何以编程方式重新启动 HSQLDB(文件模式)?

将文件中的数据加载到 hsqldb

如何使用 Hibernate 加载 HSQLDB 脚本

HSQLDB Bulk Load 大量数据

HSQLDB .script 文件