【发布时间】:2012-01-02 08:53:04
【问题描述】:
我正在尝试针对正在运行的本地 JBoss 5.1 实例创建一个自动集成测试,我需要对数据库进行断言。应用服务器在服务器模式下配置了 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>
它的工作原理是部署的应用程序运行良好,而且我还能够使用“hsqldbclient”和 Eclipse“Data Source Explorer”等外部工具连接到数据库。
问题是,当我尝试从测试用例获取连接时,连接会立即关闭,并且出现“Broken Pipe”错误。
这是我尝试建立连接的方式:
DriverManager.getConnection("jdbc:hsqldb:hsql://localhost:1701", "sa", "");
这是我在客户端遇到的错误:
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)
这是我在服务器端遇到的错误:
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)
我无法解释正在发生的事情。看起来连接正在建立,然后服务器立即关闭,但连接为空,导致抛出空指针。请注意,这都在同一台机器上,我可以使用其他工具进行连接,但使用与上述相同的连接 URL。
如果有人对尝试什么有任何想法,我将不胜感激。
【问题讨论】: