2

JNDI を介して MS SQL Server に接続しています。私のアプリはDBに一度接続し、将来の使用のためにconを保存します。必要なデータを正常に接続して取得できます。ただし、DB が再起動されると、接続が失われ、「ピアによる接続のリセット: ソケット書き込みエラー」が発生します。

したがって、アプリを再起動する必要があります。そのため、conn がコードで閉じられるたびに接続を作成することにしました。それは正しい方法ですか?connをセッションに保存する必要がありますか?

4

5 に答える 5

1

ここでも同じ答え: 接続プールを使用します。

コンテナーで実行されていないスタンドアロン/非 Web アプリケーションの場合でも、古い Apache DBCP の代わりにTomcat をお勧めします

于 2013-08-01T10:01:14.327 に答える
1

しない!接続を検索できる場所から接続プールを作成するApache DBCPのようなものを使用します。接続が必要な場合はプールから検索し、完了したらプールに解放します。Connection オブジェクトのライフサイクルは、dbcp ライブラリによって管理されます。

于 2013-08-01T09:52:30.383 に答える
0

必要がない場合は、DB へのアクティブな接続を維持しないでください。タスクが完了し、処理する必要のあるデータがなくなったらすぐに、タスクを閉じる必要があります。再度必要な場合は、データソースに新しいものを要求してください。
したがって、この DB のどこかに DataSource オブジェクトを保持する必要があります。

于 2013-08-01T09:47:04.140 に答える
0

これが、Apache DBCP などの接続プールの目的です。

次の例のように、セッション内のプールへの参照を保持し、接続が必要なときにいつでも使用します。

http://svn.apache.org/viewvc/commons/proper/dbcp/trunk/doc/PoolingDataSourceExample.java?revision=1143885&view=markup

于 2013-08-01T09:58:09.500 に答える
0

しないでください。もろくなります。

接続プールを使用します。できれば、接続が有効であることを確認するために、渡す前に接続をプローブできるものを使用してください。

コンテナーがそのようなプールを提供しない場合は、Web アプリケーションで独自のプールを使用できます。

于 2013-08-01T09:46:26.433 に答える