OSGIフレームワーク(Felix)でHSQLDB + EclipseLink + Geminiを使用します。 persistence.xmlにプールを設定したにもかかわらず、接続プールが使用されておらず、すべての要求に対して新しい接続が作成されることを深刻に疑っています。接続プールが使用されている場合は、HSQLDB側でどのようにチェックすることができますか。接続プールが使用されているかどうかを確認する方法
EDIT 1
私は-Dhsqldb.reconfig_logging=false
で自分のアプリケーションを起動します。私のアプリケーションでHSQLDBサーバーを起動するには、私は次のコード
p.setProperty("server.database.0", "file:"+dataBasePath);
p.setProperty("server.dbname.0", "testdb");
p.setProperty("server.port", "9001");
server = new Server();
を使用して、これは私のJDBC URLです:
jdbc:hsqldb:hsql://localhost:9001/testdb;hsqldb.write_delay=false;hsqldb.sqllog=3;hsqldb.applog=3;server.silent=false
しかし、私のログに私はまだ、接続プールの使用に関するすべてのメッセージを得ることはありません。
2017-04-14 11:01:57,373 | INFO | Server @48b135ed | org.hsqldb.lib.FrameworkLogger | open start - state modified
2017-04-14 11:01:57,396 | INFO | Server @48b135ed | org.hsqldb.lib.FrameworkLogger | dataFileCache open start
2017-04-14 11:01:57,407 | INFO | Server @48b135ed | org.hsqldb.lib.FrameworkLogger | dataFileCache open end
2017-04-14 11:01:57,698 | INFO | Server @48b135ed | org.hsqldb.lib.FrameworkLogger | checkpointClose start
2017-04-14 11:01:57,699 | INFO | Server @48b135ed | org.hsqldb.lib.FrameworkLogger | checkpointClose synched
2017-04-14 11:01:57,825 | INFO | Server @48b135ed | org.hsqldb.lib.FrameworkLogger | checkpointClose script done
2017-04-14 11:01:57,826 | INFO | Server @48b135ed | org.hsqldb.lib.FrameworkLogger | dataFileCache commit start
2017-04-14 11:01:57,859 | TRACE | Server @48b135ed | org.hsqldb.lib.FrameworkLogger | file sync end
2017-04-14 11:01:57,859 | INFO | Server @48b135ed | org.hsqldb.lib.FrameworkLogger | dataFileCache commit end
2017-04-14 11:01:57,934 | INFO | Server @48b135ed | org.hsqldb.lib.FrameworkLogger | checkpointClose end
EDIT 2
私は別のプロセスでHSQLDBを開始した(Javaの-jar ...)とコマンドラインパラメータとして、私は--silent false
を追加しました:これは私のログです。
[[email protected]]: [Thread[HSQLDB Server @a09ee92,5,main]]: handleConnection(Socket[addr=/127.0.0.1,port=38959,localport=9001]) entered
[[email protected]]: [Thread[HSQLDB Server @a09ee92,5,main]]: handleConnection() exited
[[email protected]]: 3:SQLCLI:MODE:31
[[email protected]]: [Thread[HSQLDB Connection @2b14b766,5,HSQLDB Connections @a09ee92]]: 3:Trying to connect user 'SA' to DB (mydb)
[[email protected]]: [Thread[HSQLDB Connection @2b14b766,5,HSQLDB Connections @a09ee92]]: 3:Connected user 'SA'
[[email protected]]: 3:SQLCLI:SQLPREPARE SELECT * FROM foo
[[email protected]]: 3:SQLCLI:SQLEXECUTE:1
[[email protected]]: 3:SQLCLI:SQLDISCONNECT
[[email protected]]: [Thread[HSQLDB Server @a09ee92,5,main]]: handleConnection(Socket[addr=/127.0.0.1,port=38960,localport=9001]) entered
[[email protected]]: [Thread[HSQLDB Server @a09ee92,5,main]]: handleConnection() exited
[[email protected]]: 4:SQLCLI:MODE:31
[[email protected]]: [Thread[HSQLDB Connection @f5cabc4,5,HSQLDB Connections @a09ee92]]: 4:Trying to connect user 'SA' to DB (mydb)
[[email protected]]: [Thread[HSQLDB Connection @f5cabc4,5,HSQLDB Connections @a09ee92]]: 4:Connected user 'SA'
[[email protected]]: 4:SQLCLI:SQLPREPARE SELECT * FROM test WHERE id IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?))
[[email protected]]: 4:SQLCLI:SQLEXECUTE:1
[[email protected]]: 4:SQLCLI:MODE:18
[[email protected]]: 4:SQLCLI:SQLDISCONNECT
HSQLDB Connection @XXXXXXXX
は、すべてのクエリのためのすべてのクエリのためとは別に異なります。この行は私がTrying to connect user 'SA' to DB (mydb)
を参照してください。今、この別々のプロセス上のコンソール上で私は、以下を参照してください。接続プールが使用されていないことをすべて意味しますか?
特にHSQLDBの管理についてよく分かりませんが、新しい接続が作成されたときにログを確認することはできませんか?最悪の場合、ドキュメントを見て: "* ServerまたはWebServerインスタンスは、プロパティserver.silent = falseで起動できます。これにより、ステートメントがサーバーに送信されるときに、すべての接続とその実行ステートメントがstdoutに出力されます。 * " –
サーバとして実行し、' server.silent = false'のアドバイスに従ってください。それは最も簡単なオプションです。 – fredt
@fredtしてください、私の編集1を参照してください –