2017-04-04 12 views
1

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)を参照してください。今、この別々のプロセス上のコンソール上で私は、以下を参照してください。接続プールが使用されていないことをすべて意味しますか?

+0

特にHSQLDBの管理についてよく分かりませんが、新しい接続が作成されたときにログを確認することはできませんか?最悪の場合、ドキュメントを見て: "* ServerまたはWebServerインスタンスは、プロパティserver.silent = falseで起動できます。これにより、ステートメントがサーバーに送信されるときに、すべての接続とその実行ステートメントがstdoutに出力されます。 * " –

+0

サーバとして実行し、' server.silent = false'のアドバイスに従ってください。それは最も簡単なオプションです。 – fredt

+0

@fredtしてください、私の編集1を参照してください –

答えて

1

サーバーメッセージは、接続が確立され、単一のSQLステートメントが実行され、接続が閉じられていることを示します。

あなたのご疑問は、リクエストごとに新しい接続が作成されていることが間違いであることが判明しました。

プールがまったく使用されていないか、正しく動作しておらず、接続が再利用されていないことがわかりました。つまり、接続プールが重要であるか、アプリケーションによって接続プールが使用されていないかはわかりません。これは、HSQLDBがどのソフトウェアが接続したのかを知らないため、あなたの設定を見るだけで見つけることができます。

関連する問題