2017-04-24 27 views
-2

ユーザー定義の接続プールをJavaで作成する必要があります。ユーザーが接続を要求し、使用後にプールに戻っても、接続に参照を保持できるようにする必要があります。Javaの接続プール

彼はプールへの接続を返して以来、私はそれを他のユーザーに与えることができます。今、2人のユーザーが同じ接続オブジェクトを持っていて間違っています。

このような状況を回避して接続プールを作成するにはどうすればよいですか。

この質問はインタビューで尋ねられます。私はこの機能を提供する多くの図書館がありますが、内部でどのようにこれを達成するために働いているのかを知っています。

+0

質問を編集して、適切な回答を特定するための十分な詳細を持つ特定の問題に限定してください。そのような話題については、全書籍やチュートリアルが書かれています。人々は**ロット**の時間を費やしています。そのような話題が1つのSO質問/回答に収まる可能性は0に近い。 – GhostCat

+0

このような要件を持つことも非常に奇妙です。ユーザがプールへの接続を返す場合(通常は 'close()'を呼び出すことによって)、クライアントはもうこれを使用できなくなります。これはクライアントコードのバグです。 'close()'を呼び出した後に呼び出しを防止する内部の 'closed'フラグを持つ接続ラッパーを使うと、これを簡単に防ぐことができます。しかし、これは、そこに多くの実装のための標準的なものであり、ホイールを再発明する必要はありません。 –

+0

解決方法は、クライアントプロキシへのPhantomReferenceを使用することです(これは 'finalizer'よりも効率的です)。プロキシが収集されると、プールへの通知によって接続が再要求され、他のユーザーがその接続を利用できるようになります。詳細は、この[記事](http://www.kdgregory.com/index.php?page=java.refobj)を参照してください。 –

答えて

0

接続ラベル付けと呼ばれるUCP(Universal Connection Pool)の機能について説明しているようです。 docを調べるとよいでしょう。