ユーザーがアクティブであるかどうかを定期的に確認するセッションを持つすべてのユーザーに対して機能を実行したいと考えています。アクティブでない場合、関数はサーブレットコンテキスト内のユーザのリストからユーザを削除し、ユーザセッションをクリアします。Tomcat上で実行されているJavaサーブレットでセッションごとにバックグラウンドプロセスを実装するにはどうすればよいですか?
各ユーザーの定期的な時間間隔で機能を実行するために使用できるものは何ですか?
私が理解していることから、servletcontextlistenerはサーブレットの有効期間中に1回だけ実行され、各ユーザーには実行されないため、使用できません。また、スレッドを使用することはサーブレットに対して推奨されます。
編集: ユーザー(ajaxを使用)は、最後にサーバーに接続したことを示すユーザーごとに格納された変数を更新する関数を含むアクションを呼び出します。
バックグラウンドスレッドは「ユーザーがアクティブであるかどうかを確認しますか」一般的には、クライアントへの永続的な接続はないので、クライアントが要求を送信したときだけ知ることができます。通常、クライアントが定期的なハートビートメッセージ(たとえば、AJAXを使用)を送信することによって、実行しようとしていることが達成されます。 –
あなたが設定できるセッションの寿命は、あなたのために何をしていますか? – Thilo
セッションは終了しますが、期限が切れると、サーブレットコンテキストの変数からユーザーを削除する機能が必要になります。 web.xmlファイルのsession-expireによって有効期限が切れたときに関数を実行する方法がわかりません。 – samwise