[c3p0] Error: c3p0プールの初期化中... ComboPooledDataSource [ acquireIncrement...
本の指示通りにc3p0を設定するも、うまくいかない
実行開始時
メッセージを表示します。c3p0プールを初期化しています... Com.mchange.v2.c3p0. ComboPooledDataSource [ acquireIncrement -> 3, acquireRetryAttempts -> 30, acquireRetryDelay -> 1000, autoCommitOnClose -> false, automaticTestTable -> null, breakAfterAcquireFailure -> false, checkoutTimeout -> 0, connectionCustomizerClassName -> null, connectionTesterClassName -> com.c2.c2.c2.c3p0. mchange.v2.c3p0.impl. DefaultConnectionTester, dataSourceName -> 1hgeby99n2wpirj7phm07|69847c5d, debugUnreturnedConnectionStackTraces -> false, description -> null, driverClass - > com.mchange.v2.c3p0.impl.Datacenter -> 1hgeby99n2wpirj7phm07|69847c5d. mysql.jdbc.Driver, factoryClassLocation -> null, forceIgnoreUnresolvedTransactions -> false, identityToken -> 1hgeby99n2wpirj7phm07|69847c5d, idleConnectionTestPeriod ->.NULL, IdleConnectionTestPeriod ->
その後、十数回リフレッシュしたところ、以下のような例外が報告されました。
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: データソースが接続の確立を拒否しました。サーバーからのメッセージ : "Too many connections"
まず、データベース接続プールを構成するために使用したコードから説明します。
public static Connection getConnection() throws PropertyVetoException, SQLException{//c3p0 connection pool
ComboPooledDataSource cpds = new ComboPooledDataSource();
try {
cpds.setDriverClass(DriverURL);
} catch (PropertyVetoException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
cpds.setJdbcUrl(ConURL);
cpds.setUser(username);
cpds.setPassword(passwoed);
cpds.setMaxPoolSize(30);
cpds.setMinPoolSize(2);
cpds.setInitialPoolSize(10);
cpds.setMaxStatements(180);
return cpds.getConnection();
}
例外ステートメント: "Too many connections"と組み合わせることで、エラーがここにあることが明らかになりました。
ComboPooledDataSource cpds = new ComboPooledDataSource();
getConnectionのたびに、ComboPooledDataSourceクラスを作成します。ComboPooledDataSourceは、作成にリソースがかかるヘビー級クラスで、もちろんエラーも報告されます
シングルトン・パターンを使ってComboPooledDataSourceクラスを作成すると、問題が解決されます。
private static ComboPooledDataSource ds;
static{
ds = new ComboPooledDataSource();
try {
ds.setDriverClass(DriverURL);
} catch (PropertyVetoException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ds.setJdbcUrl(ConURL);
ds.setUser(username);
ds.setPassword(passwoed);
ds.setMaxPoolSize(30);
ds.setMinPoolSize(2);
ds.setInitialPoolSize(10);
ds.setMaxStatements(180);
}
HungryHanのスタイルを使っていて、getConnectionメソッドを
public static Connection getConnection() throws PropertyVetoException, SQLException{//with connection pool
return ds.getConnection();
}
関連
-
解決方法 テーブルの定義が正しくありません。自動列は1つだけで、キーとして定義する必要があります。
-
MySQLデータベースのクエリ機能を使用する際に、グループ関数の使用が無効である問題の解決方法
-
IEntityChangeTracker の複数のインスタンスからエンティティオブジェクトを参照できない場合の対処法
-
ORA-30926: ソース・テーブルの安定した行のセットを取得できませんか?
-
ORA-65096 無効な共通ユーザー名またはロール名
-
db2 エラー sqlcode=-420 自動型変換問題
-
Linuxでmysql-5.7.30をインストールするための詳細な手順
-
redisサーバーに接続するとプロンプトが表示されます。Redis Client On Error: Error: connect ECONNREFUSED 127.0.0.1:6380 設定はあってる?
-
DB2v10.5Express-Cのインストール
-
mysqlの外部キー作成失敗の問題
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
(NTDLL.DLL): 0xC0000005: アクセス違反 - 解決
-
01. プロシージャの結果セットを持つ一時テーブルへのSELECT INTO
-
MongoDBコマンド
-
Oracleデータベースの挿入データエラーです。ORA-06550
-
MySqlエラー解析'where節'の未知の列'xxx'
-
SSISエラーコード DTS_E_OLEDBERROR.an OLE DBエラーが発生しました。エラーコード 0x80040E21 備考
-
AttributeError: 'function' オブジェクトには 'cursor' という属性がありません。
-
致命的なエラーです。D:Fatalエラー:メンバ関数prepare()の非オブジェクトに対する呼び出し in D:\...
-
PostgreSQLのエラー[ERROR: relation "xxxx" does not exist]を解決する。
-
MySql への JDBC 接続エラー com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException.MySQLSyntaxErrorException: 不明なデータベース 'test'