没有更多客户端连接时关闭 Hsqldb 服务器
Posted
技术标签:
【中文标题】没有更多客户端连接时关闭 Hsqldb 服务器【英文标题】:Shutdown Hsqldb server when no more clients are connected 【发布时间】:2012-04-24 17:50:52 【问题描述】:我像这样启动一个 hsqldb 1.8 服务器:
java -cp "%classpath%;.;Y:\PlantOperations\bldPlantOperations\code\lib\jboss\hsqldb-1.8.0-10.jar;C:\Documents and Settings\BThirup\Application Data\Rockwell Automation \FactoryTalk ProductionCentre\ProcessDesigner\hsqldb-1.8.0-10.jar;C:\Documents and Settings\BThirup\Application Data\Rockwell Automation\FactoryTalk ProductionCentre\ShopOperation\hsqldb-1.8.0-10.jar;" org.hsqldb.Server -database.0 文件:"C:\Documents and Settings\BThirup\Application Data\Rockwell Automation\FactoryTalk ProductionCentre\logs\ApplicationLog\mydb" -dbname.0 xdb
我有多个使用 jdbc:hsqldb:hsql://localhost/xdb;shutdown=true 连接的客户端(无特定顺序)
当没有更多客户端连接时,我想关闭 Hsqldb 服务器。
我在文档中读到,在 jdbc url 中添加 shutdown=true 会导致 hsqldb 在没有更多客户端连接后关闭。但我没有看到这种情况发生。
我也试过了
Properties info = new Properties();
info.put("user", "SA");
info.put("password", "");
info.put("shutdown", "true");
conn = DriverManager.getConnection(dbString, info);
上述也不会导致 hsqldb 服务器在最后一个客户端断开连接后关闭。
对此的任何帮助表示赞赏
巴拉
【问题讨论】:
【参考方案1】:shutdown=true
属性适用于进程内连接,而不是通过服务器连接。
如果您在服务器启动时将此属性添加到数据库 URL,它可能会起作用。这会导致数据库关闭,进而导致服务器关闭。
java -cp ... org.hsqldb.Server -database.0 文件:“C:\Documents and Settings\BThirup\Application Data\Rockwell Automation\FactoryTalk ProductionCentre\logs\ApplicationLog\mydb;shutdown=true” - dbname.0 xdb
与此无关,您只需要在类路径中引用一个 hsqldb-1.8.0-10.jar。
【讨论】:
嗨 Fredt,当我尝试按照您的建议启动 hsqldb 时:java -cp ... org.hsqldb.Server -database.0 file:"C:\Documents and Settings\BThirup\Application Data\Rockwell Automation\FactoryTalk ProductionCentre\logs\ApplicationLog\mydb;shutdown=true" -dbname.0 xdb 它不启动。我没有看到任何使用 9001 的 java 进程 -cp 后面的三个点是路径字符串的占位符。将它们替换为原始版本或缩短版本。 java -cp "%classpath%;.;Y:\PlantOperations\bldPlantOperations\code\lib\jboss\hsqldb-1.8.0-10.jar;C:\Documents and Settings\BThirup\ Application Data\Rockwell Automation\FactoryTalk ProductionCentre\ProcessDesigner\hsqldb-1.8.0-10.jar;C:\Documents and Settings\BThirup\Application Data\Rockwell Automation\FactoryTalk ProductionCentre\ShopOperation\hsqldb-1.8.0-10.jar ;" org.hsqldb.Server -database.0 文件:"C:\Documents and Settings\BThirup\Application Data\Rockwell Automation\FactoryTalk ProductionCentre\logs\ApplicationLog\mydb;shutdown=true" -dbname.0 xdb 是这个样子现在 在这种情况下,尝试使用 server.properties 文件启动服务器,该文件包含 db 路径和名称作为不带双引号的属性。自动关闭可能会或可能不会起作用,但服务器应该会启动。 拥有多个 jar 的原因是我有不同的客户端(即应用程序),安装时会将 hsqldb jar 放到不同的文件夹中。这些客户端中的任何一个都可以首先启动,并且如果一个 hsqldb 服务器不存在,则负责确保启动该服务器。其他客户端只是连接到服务器。由于我不知道正在启动哪个客户端,我选择将 jar 放在类路径中所有可能的位置。以上是关于没有更多客户端连接时关闭 Hsqldb 服务器的主要内容,如果未能解决你的问题,请参考以下文章