問題タブ [apache-commons-dbcp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - DBCP PoolableConnectionFactory を構成するには?
これは、DBCP 1.4 接続ファクトリを使用して DataSource を作成する方法です。
正常に動作しますが、ここにリストされているパラメーターを使用して構成する方法がわかりません: http://commons.apache.org/dbcp/configuration.html。たとえば、に設定testWhileIdle
する必要がありtrue
ます。
java - Spring 2.5はJDBC接続を取得できませんでした
Spring 2.5 SimpleJdbcTemplate を使用して MySQL db にアクセスしています。DB に頻繁にアクセスしようとすると (Quartz を使用して毎分アクセスする)、次のスタック トレースが取得されます。
毎分実行されるコード:
テスト目的で毎分実行されます。今後は週1回実施予定です。
私のDBCPプロパティ:
コマンドラインからデータベースにアクセスできます。
spring - JDBCTemplate を使用した BasicDataSource が期待どおりに接続をプールしない
Spring アプリケーションで BasicDataSource を使用して JDBCTemplate との接続をプールしようとしています。私が読んだすべてのことから、これは非常に単純なはずです。XML で BasicDataSource を構成し、データ ソースを Bean に注入し、setter メソッドで新しい JDBCTemplate を作成するだけです。
これを行ったとき、自分のパフォーマンスがひどいことに気づきました。そこで、Spring の SingleConnectionDataSource に切り替えて、何が起こるかを確認したところ、パフォーマンスが大幅に向上しました。プロファイラー ツールで調査を開始したところ、BasicDataSource を使用すると、クエリごとに新しい接続が作成されていることに気付きました。
さらに調査すると、クエリの終了後に接続が閉じられている場所がわかります。具体的には、Spring の DataSourceUtil クラスで:
私が気づいたことは、接続を開いたままにする「SmartDataSource」の特別なロジックがあることです。これは、私が見ていた動作を部分的に説明しています: SingleConnectionDataSource は SmartDataSource を実装しているため、接続は閉じられません。ただし、BasicDataSource を使用すると、接続の close() メソッドは接続をプールに返すだけだと思いました。しかし、プロファイラーで何が起こっているかを見ると、実際には sybase 接続で close メソッドが呼び出されています。
最後に 1 つ (これはこれから調査します): 一部のクエリ (データベースへのコミットを含む) に TransactionTemplate を使用しますが、単純なクエリは transactionTemplate 内にありません。それが問題と関係があるかどうかはわかりません。
編集1:
OK、プロジェクトから少し離れた後、ようやく調査する時間ができました。問題を示す非常に簡単なテストを次に示します。
これが私の2つのデータソース構成です。
最初の構成でテストを実行すると、約 2.1 秒かかります。2 番目の構成で実行すると、約 4.5 秒かかります。maxActive=1 や testOnBorrow=false を設定するなど、BasicDataSource でさまざまなパラメーターを試しましたが、違いはありません。
spring - Spring Framework で BasicDataSource の最大プール サイズまたは接続サイズを設定する方法
以下の設定を使用して、Spring アプリケーションを JBoss EAP サーバーにデプロイしています。
接続プールの最小サイズと最大サイズを構成するにはどうすればよいですか?
BasicDataSource の参照またはベスト プラクティスは非常に役立ちます。
java - DBCP 接続のプロパティ
、などの定義されたプロパティを理解するのに苦労しています。minIdle
maxIdle
次の設定で次のエラーが表示されます
java - DBCP - 異なるデータベースの validationQuery
DBCP プールを使用しており、 testOnBorrowとtestOnReturnを使用して、接続がまだ有効かどうかをテストしたいと考えています。
残念ながら、それを機能させるにはプロパティ validationQuery を設定する必要があります。
質問: validationQuery にはどのような値を指定する必要がありますか?
私は知っています: validationQuery は、少なくとも 1 つの行を返す SQL SELECT ステートメントでなければなりません。
問題は、さまざまなデータベース (DB2、Oracle、hsqldb) を使用していることです。
java - Spring を使用した Apache dbcp PoolingDataSource の構成
Apache dbcp の例のパターンに従おうとしましたが、データベース プロパティがどこからどのように取得され、どの Bean にアプリケーション コンテキストに配置する必要があるかを除いて、すべてを理解しています。
代わりに Spring Data Source を使用しましたが、思い出すと急いで構成したため、Apache dbcp 自体によって提供される元の dataSource の構成に苦労したことを覚えています。そのため、たまたま問題に直面し、PoolingDataSource を使用するという本来の目的を果たす時間ができました。
Spring 実装を使用した理由は、データベースに接続するためのパラメーターを設定する手段を提供するためです。
http://commons.apache.org/dbcp/apidocs/org/apache/commons/dbcp/PoolingDataSource.htmlによると
URL やロード ドライバなどの構成を設定する方法はありません。
オブジェクトプールなどで追跡しようとしましたが、本当に迷子になりました。
前もって返信: はい、Apache basicDataSource を使用したくありません。
だから今私は問題に戻ってきて、パラメータを取得する場所を本当に理解できませんか? 運転者?URL? url、pw、ユーザー名は接続ファクトリーに設定されているようです。しかし、postgresql ドライバーをどこで取得してロードするのでしょうか?
設定を完了するのを手伝ってください。
(構成にはスプリングを使用)
関心があるのは最初の 2 つだけだと思いますが、念のためすべてを含めました。
回避策を使用している人が多いようです: http://forum.springsource.org/showthread.php?10772-How-do-I-create-a-org-apache-commons-dbcp-PoolableConnection
java - エラー::パブリッククラスorg.apache.commons.dbcp.BasicDataSource
このエラー(関連するすべての「未解決のタイプ」エラーを含む)は、Mavenプロジェクトのインストール中に発生しました。dbcpに関連する変更はありませんでした。すべてのローカルリポジトリを削除しようとし、再度インストールしてcommons-dbcp
ダウンロードしたので、依存関係は問題ないと思います(実際には、数時間前に同じ依存関係でインストールできました)。そのような行動の理由は何でしょうか?
spring - この dbcp 例外は重要ですか?
私はSpring 3.05 + mysqlを使用しています。プログラムの実行後、ログから多くの例外が見つかりました:
これは Mysql が原因であることはわかっています。数時間のアイドル状態の後、最初は接続を閉じましたが、dbcp 側からはまだ生きているように見えます。Mysql は複数のデータベース インスタンスを提供しているため、アプリケーション コード側から変更を加える必要があります。
私の質問は、例外は本当に重要ですか? JPAは失敗後に接続を再試行しますか?
ありがとう!
java - 100 ユーザーの接続プール - 価値はありますか?
Oracle 10g 上にある小さな Java Web アプリケーションの作業を開始しています。予想されるユーザー ベースは最大 100 ユーザーです。アプリを使用しているユーザーが一度に 50 人を超えるとは思わない。
現在、DBCP、C3P0、または Tomcat JDBC 接続プールを検討していますが、このような小規模なユーザー ベースに真の価値をもたらすものはありますか? 私はどのソリューションも使用したことがないため、複雑さが生じるリスクがあります (また、接続プーリングでクレイジーな問題に直面している他のスレッドを見たことがあります)。危険。あるいは、それを行う他の方法はありますか?たぶん、Oracleには独自のソリューションがありますか?
助けてください。
ありがとうございました。