問題タブ [bonecp]
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 - Java接続プールのベストプラクティス?
c3p0の常時ロックにうんざりした後、データベースの代替接続プールとしてBoneCPを使用します。1分あたり約7,000アイテムを処理するサーバーアプリがあり、それらのアイテムをMySQLデータベースに記録する必要があります。現在、100個のワーカースレッドがあり、次のようにプールを設定しています。
そのようなアプリのそれらの許容可能な設定はありますか?getConnection
実行を開始して1〜2分後に、プールを呼び出そうとしたときにBoneCP例外が発生したためです。助けてくれてありがとう。
これが私のワーカースレッドのdb呼び出しに使用していたコードです。このdbConn = this.dbPool.getConnection()
行で失敗することはありません。接続を正しく閉じていませんか?
これは私が見たエラーです:
jdbc - 接続がプールに戻されたときに、BoneCP(または他のプール)は接続のステートメントを閉じますか?
接続がプールに戻されたときに、BoneCP(または他のプール)は接続のステートメントを閉じますか?私が理解しているように、実際の接続のcloseメソッドを呼び出さないため、ステートメントを自動的に閉じることはありません。それで、それは他の方法でステートメントを閉じますか、それとも手動でステートメントを閉じる必要がありますか?
java - OpenJPA 2.0.1 でキャッシングを無効にする方法 (編集: BoneCP の問題)
OpenJPA 2.0.1 でキャッシングを無効にできません。
persistence.xmlに次のプロパティを設定しました。
アプリを起動すると、これらのプロパティの正しい値がログアウトされることがわかります。
これをテストするための基本的なエンティティを作成しました。これには、テーブルを毎秒クエリするだけのメイン メソッドがあります。反復ごとに新しい EntityManager を作成しています。これを空の TEST テーブルに対して実行し、その後手動でデータをテストに挿入すると、次のようになります。
新しいデータを取得することはありません(ただし、プログラムを再起動すると取得されます)。
私は何を間違っていますか?
EDIT1 : while ループ内で新しい EntityManagerFactory を作成すると機能しますが、DataCache と QueryCache を false に設定しているため、これを行う必要はなく、費用がかかることを理解しています。
EDIT2 : BoneCP を接続プール マネージャーとして使用していましたが、DHCP または C3P0 の使用に戻すと、問題はなくなりました。理由は定かではありませんが...
EDIT3 : これは、BoneCP に使用していた構成です。
jdbc - 2011/2012 での Java JDBC 接続プール ライブラリの選択は?
新しいアプリケーション プロジェクト (Web アプリケーションではない) には、どの JDBC 接続プール ライブラリを使用すればよいですか?
- Apache DBCP には、2.0 までプッシュされる未解決の問題が十分にあると思います。
- C3P0の開発は中止されているようです。
- そして、どちらも比較的遅いように見えます。
- プロクソールは死んだ。
- DBPoolにはほとんどコミュニティがありません (少なくとも、公開されているコミュニティは見つかりませんでした。フォーラムもメーリング リストもありません...)。
- Apache Tomcat プールは、Tomcat なしでは使用できないようです
- Oracle Web サイトでSQL データソースの記事を見つけましたが、サーブレットや Web サービスなどのコンテナーで実行されているアプレットにのみ適用できるようです。
BoneCPを選択する必要がありますか? 大きな要件はありません。アクティブに開発中の、使いやすくて使いやすいデータベース接続プールが必要です。作者がバグレポートに返信したり、特定の質問に答えたりできるライブラリ。
ところで、実際には、MySQL のみを使用しています。MySQL ドライバーが DriverManager インターフェイスをサポートしていることがわかりましたが、実際に接続をプールするかどうかはわかりません。
datasource - SpringTransactionManagerとBoneCP接続プールの統合
BoneCP接続プールメカニズムを使用しており、Springフレームワークのサポートを使用してトランザクションを管理したいと考えています。Spring Transaction Managementに関する例を見つけ、この例を適用しようとしました。接続プールからDataSourceインスタンスを取得し、このデータソースを作成したDataSourceTransactionManagerに以下のように渡します。
しかし、テストしたところ、コミット操作の前にトランザクションマネージャーがストアにデータを書き込んでいることがわかりました。
トランザクションマネージャーを作成する前に、新しいデータソースを作成することと関連付けることができますか?またはあなたは何か考えがありますか?
java - Oracle JDBCドライバーステートメントキャッシュとBoneCPステートメントキャッシュ?
私は Oracle JDBC ドライバーを使用しており、BoneCP を評価しています。どちらもステートメントキャッシュを実装しています。
ステートメントのキャッシュにどちらを使用する必要があるかを自問しています。どう思いますか?それぞれの方法の長所と短所は何ですか?
jdbc - c3p0 または dbcp または BoneCP は、切断された接続を処理できます
jdbc接続を処理するためのc3p0とdbcpについて読んでいて、多くの問題や、dbcpは死んでいるがc3p0はjdbc4を実行できないなどと言う人々を聞いています。しかし、これらの投稿が古くなっているかどうかはわかりません。
ここで、壊れた接続がどのように処理されるかを説明している BoneCP を見つけました。接続はラップされ、BoneCP はアプリケーションに渡される前に例外の事前チェックを行います。接続に問題がある場合、BoneCP はその接続をプールから削除します。
1.) これらすべてのプールには、そのような接続処理がありますか?
2.) この質問は何度も聞かれますが、2011 年からは答えが見つかりませんでした。次の 10 年間、またはそれ以上維持される新しいアプリケーションには、何を使用すればよいでしょうか。
java - BoneCP の使用: プールからの接続の処理
BoneCP を使い始めたばかりで、接続プールを使用するのはこれが初めてです。どのように使用するべきかについて、私は少し混乱しています。現在、BoneCP オブジェクトを静的変数として保存しているため、異なる接続間で使用できます。
接続が完了したら、 で閉じconnection.close()
ます。
これを行う必要がありますか、それともプールで再利用できるように閉じる必要はありませんか?
これは、接続を取得するための私の現在の実装です:
これは正しいように見えますか、それとも BoneCP の使用方法を誤解していますか?
spring - SpringTransactionTemplateを使用して現在のトランザクションをキャンセルします
私は接続プールとSpringを使用していますTransactionTemplate
。最初に接続プールをシャットダウンする場合は、すべての接続をプールに戻す必要があります。これは、connection.close()
を呼び出す必要があることを意味します。いくつかのクエリにforを使用するTransactionTemplate
スレッドと、接続プールでシャットダウンメソッドを呼び出したい別のスレッドがありますが、これを行う前に、最初TransactionTemplate
にすべての接続を閉じるように指示する必要があります(実際にはそれらをプールに戻すだけです)。
使用済みの接続をすぐに閉じるために、Springでこれをどのように行うことができますか?
java - BoneCP:getConnectionメソッドはスレッドセーフですか、それとも処理する必要がありますか?
BoneCP接続プールを使用しているときに、次の混乱に遭遇しました。これに関するアドバイスを聞きたいと思います。
getConnection
BoneCPのメソッドはスレッドセーフですか?並列接続を要求するスレッドが多数ある場合に、これを使用するための最良の方法は何ですか?connection.close()
接続を使用した後、毎回呼び出す必要がありますか?- 呼び出す必要がある場合、それは
connection.close()
本当にDBとの接続を切断しますか、それとも単に接続をプールに送信しますか?
よろしくお願いします。