0

ハイ、このチャンドラシェカール、

一度に複数のリクエスト (100) を投稿すると、c3p0 インスタンスが作成されます。

元::

 [AbstractPoolBackedDataSource] Initializing c3p0 pool...
 com.mchange.v2.c3p0.PoolBackedDataSource@3b9421d5 [ connectionPoolDataSource -> com.mchange.v2.c3p0.WrapperConnectionPoolDataSource@8f5cd4d1 [ acquireIncrement -> 5, acquireRetryAttempts -> 30, acquireRetryDelay -> 1000, autoCommitOnClose -> true, automaticTestTable -> null, breakAfterAcquireFailure -> false, checkoutTimeout -> 0, connectionCustomizerClassName -> null, connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, debugUnreturnedConnectionStackTraces -> true, factoryClassLocation -> null, forceIgnoreUnresolvedTransactions -> false, identityToken -> 1hge2v08pob8zy1nl2rit|1474b36, idleConnectionTestPeriod -> 3600, initialPoolSize -> 10, maxAdministrativeTaskTime -> 600, maxConnectionAge -> 0, maxIdleTime -> 18000, maxIdleTimeExcessConnections -> 0, maxPoolSize -> 50, maxStatements -> 0, maxStatementsPerConnection -> 0, minPoolSize -> 10, nestedDataSource -> com.mchange.v2.c3p0.DriverManagerDataSource@3a7ecbf6 [ description -> null, driverClass -> null, factoryClassLocation -> null, identityToken -> 1hge2v08pob8zy1nl2rit|87f988, jdbcUrl -> jdbc:mysql://localhost:3306/tiscover, properties -> {user=******, password=******} ], preferredTestQuery -> null, propertyCycle -> 0, testConnectionOnCheckin -> false, testConnectionOnCheckout -> false, unreturnedConnectionTimeout -> 600, usesTraditionalReflectiveProxies -> false; userOverrides: {} ], dataSourceName -> null, factoryClassLocation -> null, identityToken -> 1hge2v08pob8zy1nl2rit|6c2668, numHelperThreads -> 10 ]
13:24:16,003 INFO  [AbstractPoolBackedDataSource]
 Initializing c3p0 pool... com.mchange.v2.c3p0.PoolBackedDataSource@38d1c65b [ connectionPoolDataSource -> com.mchange.v2.c3p0.WrapperConnectionPoolDataSource@efa9b134 [ acquireIncrement -> 5, acquireRetryAttempts -> 30, acquireRetryDelay -> 1000, autoCommitOnClose -> true, automaticTestTable -> null, breakAfterAcquireFailure -> false, checkoutTimeout -> 0, connectionCustomizerClassName -> null, connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, debugUnreturnedConnectionStackTraces -> true, factoryClassLocation -> null, forceIgnoreUnresolvedTransactions -> false, identityToken -> 1hge2v08pob8zy1nl2rit|d46725, idleConnectionTestPeriod -> 3600, initialPoolSize -> 10, maxAdministrativeTaskTime -> 600, maxConnectionAge -> 0, maxIdleTime -> 18000, maxIdleTimeExcessConnections -> 0, maxPoolSize -> 50, maxStatements -> 0, maxStatementsPerConnection -> 0, minPoolSize -> 10, nestedDataSource -> com.mchange.v2.c3p0.DriverManagerDataSource@f3230993 [ description -> null, driverClass -> null, factoryClassLocation -> null, identityToken -> 1hge2v08pob8zy1nl2rit|b31fb1, jdbcUrl -> jdbc:mysql://localhost:3306/tiscover, properties -> {user=******, password=******} ], preferredTestQuery -> null, propertyCycle -> 0, testConnectionOnCheckin -> false, testConnectionOnCheckout -> false, unreturnedConnectionTimeout -> 600, usesTraditionalReflectiveProxies -> false; userOverrides: {} ], dataSourceName -> null, factoryClassLocation -> null, identityToken -> 1hge2v08pob8zy1nl2rit|9861d7, numHelperThreads -> 10 ]
13:24:16,004 INFO  [AbstractPoolBackedDataSource] 
Initializing c3p0 pool... com.mchange.v2.c3p0.PoolBackedDataSource@3b6dc297 [ connectionPoolDataSource -> com.mchange.v2.c3p0.WrapperConnectionPoolDataSource@433920d4 [ acquireIncrement -> 5, acquireRetryAttempts -> 30, acquireRetryDelay -> 1000, autoCommitOnClose -> true, automaticTestTable -> null, breakAfterAcquireFailure -> false, checkoutTimeout -> 0, connectionCustomizerClassName -> null, connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, debugUnreturnedConnectionStackTraces -> true, factoryClassLocation -> null, forceIgnoreUnresolvedTransactions -> false, identityToken -> 1hge2v08pob8zy1nl2rit|3561b9, idleConnectionTestPeriod -> 3600, initialPoolSize -> 10, maxAdministrativeTaskTime -> 600, maxConnectionAge -> 0, maxIdleTime -> 18000, maxIdleTimeExcessConnections -> 0, maxPoolSize -> 50, maxStatements -> 0, maxStatementsPerConnection -> 0, minPoolSize -> 10, nestedDataSource -> com.mchange.v2.c3p0.DriverManagerDataSource@4084843c [ description -> null, driverClass -> null, factoryClassLocation -> null, identityToken -> 1hge2v08pob8zy1nl2rit|3f9de3, jdbcUrl -> jdbc:mysql://localhost:3306/tiscover, properties -> {user=******, password=******} ], preferredTestQuery -> null, propertyCycle -> 0, testConnectionOnCheckin -> false, testConnectionOnCheckout -> false, unreturnedConnectionTimeout -> 600, usesTraditionalReflectiveProxies -> false; userOverrides: {} ], dataSourceName -> null, factoryClassLocation -> null, identityToken -> 1hge2v08pob8zy1nl2rit|6dfb07, numHelperThreads -> 10 ]
13:24:16,004 INFO  [AbstractPoolBackedDataSource] 
Initializing c3p0 pool... com.mchange.v2.c3p0.PoolBackedDataSource@3bcf7210 [ connectionPoolDataSource -> com.mchange.v2.c3p0.WrapperConnectionPoolDataSource@896b85d4 [ acquireIncrement -> 5, acquireRetryAttempts -> 30, acquireRetryDelay -> 1000, autoCommitOnClose -> true, automaticTestTable -> null, breakAfterAcquireFailure -> false, checkoutTimeout -> 0, connectionCustomizerClassName -> null, connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, debugUnreturnedConnectionStackTraces -> true, factoryClassLocation -> null, forceIgnoreUnresolvedTransactions -> false, identityToken -> 1hge2v08pob8zy1nl2rit|16e47cb, idleConnectionTestPeriod -> 3600, initialPoolSize -> 10, maxAdministrativeTaskTime -> 600, maxConnectionAge -> 0, maxIdleTime -> 18000, maxIdleTimeExcessConnections -> 0, maxPoolSize -> 50, maxStatements -> 0, maxStatementsPerConnection -> 0, minPoolSize -> 10, nestedDataSource -> com.mchange.v2.c3p0.DriverManagerDataSource@f06dd726 [ description -> null, driverClass -> null, factoryClassLocation -> null, identityToken -> 1hge2v08pob8zy1nl2rit|bd7db5, jdbcUrl -> jdbc:mysql://localhost:3306/tiscover, properties -> {user=******, password=******} ], preferredTestQuery -> null, propertyCycle -> 0, testConnectionOnCheckin -> false, testConnectionOnCheckout -> false, unreturnedConnectionTimeout -> 600, usesTraditionalReflectiveProxies -> false; userOverrides: {} ], dataSourceName -> null, factoryClassLocation -> null, identityToken -> 1hge2v08pob8zy1nl2rit|1e616dc, numHelperThreads -> 10 ]
13:24:16,006 INFO  [AbstractPoolBackedDataSource] 

....など100回。

この背後にある意味は何ですか。100 個の接続プール インスタンスが作成されます..? c3p0接続プールはスレッドセーフではありません..? もしそうなら、私たちはどのように対処するのですか..?

誰か助けてください。

前もって感謝します、チャンドラシェカール

4

1 に答える 1

1

まず、接続は一度にデータベースとの対話でのみ実行できます。複数のスレッドで接続を共有すると、動作はランダムになります。理想的には、INSERT/UPDATE/DELETE ステートメントを実行して更新カウントを取得するか、SELECT ステートメントを実行して結果セットを読み取り、すべてのリソースを閉じるなど、DB とやり取りしたいときにプールから接続を取得するだけです (つまり、 . ResultSet、ステートメント、および接続)。

接続が接続プーラーからのものである場合、そのような接続での close() 呼び出しはプーラーによって処理され、接続がプールに戻されます。

出力したステートメントは、作成された接続プールに関するプーラーからの情報です。

于 2012-08-24T09:57:30.713 に答える