ここでJavaサーブレットについて話します...私は独自の「リクエストごとのコンテキスト」の作成に取り組んでおり、「リクエストごとのコンテキスト」オブジェクトをThread.currentThread()。getId()値に結び付けようとしていました。
このコンテキストオブジェクトをどこにでも渡す代わりに、ユーザーがリクエストごとに基づく関数を呼び出したときに現在のスレッドIDをチェックし、そのスレッドIDのハッシュテーブルからコンテキストオブジェクトを自動的に取得することを計画していました。
私はこのようなコードを使用します。
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
MyFramework.EnterContext();
try {
// do stuff here that leads to other classes on the same thread
// Access current context via static MyFramework.getCurrentContext()
}
finally { MyFramework.ExitContext(); }
}
ただし、ExitContext()を呼び出さない潜在的なユーザーからアプリケーションを自動的に保護したいと思います。C#では、onexitのスレッドオブジェクトにイベントハンドラーがあります...(これについては間違っていると思います)スレッドが終了したときに検出またはポーリングする方法はありますか?現在、threadId(long)のみを保存しています。
何か案は?