データベースに対してアサーションを行う必要がある実行中のローカルJBoss 5.1インスタンスに対して自動統合テストを作成しようとしています。アプリケーションサーバは、TCPを介してアクセス可能にするために、サーバモードでHSQLデータソースで設定されています。ユニットテストから接続するとHSQLが直ちにクローズしました
これらは、構成の関連する(と思う)の部分です:
<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と "データソースエクスプローラ"があります。
問題は、テストケースから接続を取得しようとすると、接続がすぐに閉じられ、「壊れたパイプ」エラーが発生することです。
これは私が接続を取得しようとする方法である:
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)
私は何が起こっているのかを解釈しようとして迷っています。接続が作成されていて、すぐにサーバーによって閉じられたように見えますが、接続はNULLになり、nullpointerがスローされます。これはすべて同じマシン上にあり、上記の同じ接続URLを使用して他のツールを使用して接続できることに注意してください。
誰かが何を試していいか分かっているなら、私はとても感謝しています。
残念ながら、データベースがすでにアプリケーションサーバーによってロックされているため、残念ながらファイルurlを使用して接続することはできません。しかし、それが問題だったように使用されているバージョンを調べる方向で私を指摘してくれてありがとう! –