Java 从单元测试连接时,HSQL立即关闭连接

Java 从单元测试连接时,HSQL立即关闭连接,java,jdbc,hsqldb,jboss5.x,Java,Jdbc,Hsqldb,Jboss5.x,我正试图针对一个正在运行的本地JBoss5.1实例创建一个自动集成测试,在这个实例中,我需要对数据库进行断言。appserver配置了服务器模式下的HSQL数据源,以便通过TCP访问 以下是配置的相关部分(我认为): <connection-url>jdbc:hsqldb:hsql://${jboss.bind.address}:1701</connection-url> <driver-class>org.hsqldb.jdbcDriver</driv

我正试图针对一个正在运行的本地JBoss5.1实例创建一个自动集成测试,在这个实例中,我需要对数据库进行断言。appserver配置了服务器模式下的HSQL数据源,以便通过TCP访问

以下是配置的相关部分(我认为):

<connection-url>jdbc:hsqldb:hsql://${jboss.bind.address}:1701</connection-url>
<driver-class>org.hsqldb.jdbcDriver</driver-class>
<user-name>sa</user-name>
<password></password>
<mbean code="org.jboss.jdbc.HypersonicDatabase" 
     name="jboss:service=Hypersonic">
     <attribute name="Port">1701</attribute>        
     <attribute name="BindAddress">${jboss.bind.address}</attribute>     
     <attribute name="Silent">true</attribute>
     <attribute name="Database">default</attribute>
     <attribute name="Trace">false</attribute>
     <attribute name="No_system_exit">true</attribute>
</mbean>
这是我在客户端遇到的错误:

Caused by: org.hsqldb.HsqlException: connection exception: connection failure: java.net.SocketException: Broken pipe
    at org.hsqldb.error.Error.error(Unknown Source)
    at org.hsqldb.ClientConnection.execute(Unknown Source)
    at org.hsqldb.ClientConnection.<init>(Unknown Source)
我无法解释正在发生的事情。看起来连接正在建立,然后服务器立即关闭,但连接随后为null,这会导致抛出null指针。请注意,这些都在同一台机器上,我可以使用其他工具进行连接,但使用与上述相同的连接URL


如果有人知道该尝试什么,我将不胜感激。

我没有尝试过,但如果您的连接是在app server中建立的,您可以通过以下方式直接连接到数据库:

DriverManager.getConnection("jdbc:hsqldb:file:default", "sa", "");
您可能需要使用默认数据库的完整路径


NPE可能是所用HSQLDB版本中的一个bug。尝试将hsqldb.jar替换为更高的版本,例如hsqldb 1.8.1.3。

我在查看使用了哪些版本的hsqldb后发现了问题(fredt的答案告诉了我这个想法)


出于某种原因,客户端使用的是HSQLDB2.0,但JBoss 5.1附带了1.8。我将客户端改为也使用1.8,问题就消失了。其实很简单,但我被困了将近一天

您好,不幸的是,无法使用文件url进行连接,因为数据库已经被appserver锁定,这在某种程度上是有意义的。但是非常感谢您为我指明了研究所用版本的方向,因为这就是问题所在!
09:46:04,132 ERROR [STDERR]    Exception in thread "HSQLDB Connection @fa3b82" 
09:46:04,133 ERROR [STDERR]    java.lang.NullPointerException
09:46:04,133 ERROR [STDERR]     at org.hsqldb.ServerConnection.close(Unknown Source)
09:46:04,133 ERROR [STDERR]     at org.hsqldb.ServerConnection.run(Unknown Source)
09:46:04,133 ERROR [STDERR]     at java.lang.Thread.run(Thread.java:662)
DriverManager.getConnection("jdbc:hsqldb:file:default", "sa", "");