私は、Java Server Faces(JSF)を使用してWebベースのアプリケーションを作成しています。私はちょうどデータベース接続が開いていると、ユーザーがWebページを(ブラウザを閉じる)、JSFは自動的にこの接続を閉じますか?ユーザーがページをJSF内に残すと、データベース接続がクローズされますか?
答えて
クライアントにデータを送信する前に、データを取得した直後にデータベース接続を終了してから、クライアントに送り返してください。 finally
ブロックでそれを行うのが最適です。開いたままにする本当の理由はありませんが、潜在的なメモリリークだけでなく、大きなセキュリティリスクを引き起こします。
ページを離れたユーザーは、データベース接続に影響を与えることはできません。ユーザーがページを要求すると、サーバーが応答します。それが彼らの相互コミュニケーションの終わりです。ユーザーがブラウザを閉じるか、サーバーを押し戻すと、これは通知されません。
HTTP応答を作成する前に、コードを閉じることができるのはJavaコードのみです。
これは、マネージドBeanのスコープによって異なります。サーバーが同じセッションから新しい要求(別のページ)を取得した場合、ViewSopedおよびRequestScoped Beanは削除されます。もちろん、ブラウザを閉じることは、セッションがタイムアウトするまでサーバーによって検出されません。 –
はい、ブラウザを閉じるユーザーにはそのような影響はありません。また、新しいリクエストは、新しいHTTPレスポンスなどを生成するためにJavaコードを実行することを意味します。 –
あなたは正しいです、私の最初のコメントを編集しました。 –
データベース接続をクローズするか、接続プールがクローズしている場合は接続プールが閉じられます。またはガーベッジ・コレクションが取得されます。
JPAを使用しているのか、DB接続を自分で管理していますか? –
あなたは何をすると言いますか、コンピュータは自分自身のために考えていません... –
いいえ私はJPAを使用しませんでした。 – Adan