問題タブ [session]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Tomcat で別のセッション ストアを指定する方法はありますか?
Tomcat (ここではバージョン 5) は、セッション情報をメモリに保存します。クラスタリングの際、この情報は定期的にクラスタ内の他のサーバーにブロードキャストされ、同期が保たれます。データベース ストアを使用してセッションを永続化することはできますが、この情報は定期的にのみ書き込まれ、メモリ内セッションを実際に置き換えるのではなく、実際には障害回復のためにのみ使用されます。
スティッキー セッションを使用したくない場合 (残念ながら、構成では許可されていません)、セッションが同期しなくなるという問題が発生します。
他の言語では、Web フレームワークにより、データベースをプライマリ セッション ストアとして使用できるようになる傾向があります。これによりスケーリングの問題が発生する可能性がありますが、セッション管理が非常に簡単になります。この方法でTomcatにセッション用のデータベースを使用させる方法があるかどうか疑問に思っています(技術的には、これによりTomcat server.xmlでのクラスタリング構成の必要性もなくなります)。
java - Hibernate がセッションをフラッシュするとき、セッション内のどのオブジェクトがダーティかをどのように判断しますか?
Hibernate についての私の理解は、オブジェクトが DB からロードされると、それらがセッションに追加されるということです。設定に応じて、さまざまな時点でセッションがフラッシュされます。この時点で、変更されたオブジェクトがデータベースに書き込まれます。
Hibernate は、どのオブジェクトが「ダーティ」であり、書き込む必要があるかをどのように判断しますか?
Hibernate によって生成されたプロキシは、フィールドへの割り当てをインターセプトし、オブジェクトをセッションのダーティ リストに追加しますか?
それとも、Hibernate はセッション内の各オブジェクトを見て、それをオブジェクトの元の状態と比較しますか?
それともまったく違うもの?
java - Tomcatを使用してサブドメインセッションCookieを許可するための最良の方法
デフォルトでは、tomcatは現在のドメインのセッションCookieを作成します。
www.example.comを使用している場合、Cookieはwww.example.com用に作成されます(www.example.comでのみ機能します)。たとえば、example.comは.example.com用に作成されます(望ましい動作は、example.com自体だけでなくexample.comの任意のサブドメインでも機能します)。
セッションCookieの作成をインターセプトし、正しい.example.comドメインで置換Cookieを作成するように見えるTomcatバルブをいくつか見ましたが、どれも問題なく機能しているようには見えず、すべて既存のCookieを残しているように見えます。新しいものを作成します。これは、リクエストごとに2つのJSESSIONIDCookieが送信されていることを意味します。
誰かがこの問題の決定的な解決策を持っているかどうか疑問に思いました。
c# - Different values of GetHashCode for inproc and stateserver session variables
I've recently inherited an application that makes very heavy use of session, including storing a lot of custom data objects in session. One of my first points of business with this application was to at least move the session data away from InProc, and off load it to either a stateserver or SQL Server.
After I made all of the appropriate data objects serializable, and changed the web.config to use a state service, everything appeared to work fine.
However, I found that this application does a lot of object comparisons using GetHashCode(). Methods that worked fine when the session was InProc no longer work because the HashCodes no longer match when they are supposed to. This appears to be the case when trying to find a specific child object from a parent when you know the child object's original hash code
If I simply change the web.config back to using inproc, it works again.
Anyone have any thoughts on where to begin with this?
EDIT:
qbeuek: thanks for the quick reply. In regards to:
The default implementation of GetHashCode in Object class return a hash value based on objects address in memory or something similar. If some other identity comparison is required, you have to override both Equals and GetHashCode.
I should have given more information on how they are using this. Basically, they have one parent data object, and there are several arrays of child objects. They happen to know the hash code for a particular object they need, so they are looping through a specific array of child objects looking for a hash code that matches. Once a match is found, they then use that object for other work.
session - セッション ファサード コア J2EE パターンの長所と短所は何ですか?
セッション ファサード コア J2EE パターンの長所と短所は何ですか?
その背後にある仮定は何ですか?
これらの仮定は特定の環境で有効ですか?
session - Classic ASP で、データベース接続を Session オブジェクトに保存できますか?
データベース接続を Session オブジェクトに保存できますか?
asp.net - ASP.NETでのセッション変数の混同?
ASP.NET が、どのユーザーがサーバー上のどのセッション変数に関連付けられているかを混同することは可能ですか? セッション変数は、時間、空間、および次元を超えて、それらを作成した元のユーザーに不変に関連付けられていますか?
asp.net - ブラウザまたは明示的なロゴを閉じたときにのみ期限切れになるようにasp.netセッションを明示的に設定するにはどうすればよいですか?
デフォルトでは、セッションの有効期限は 20 分です。
更新: ブラウザーが閉じられるまで、セッションの有効期限が切れないようにします。
Update2: これは私のシナリオです。ユーザーがサイトにログインします。サイトの周りを再生します。コンピューターを離れてシャワーを浴びます (>20 分 ;))。コンピューターに戻ってきて、遊ぶことができるはずです。彼はブラウザーを閉じます。これにより、セッション Cookie が削除されます。次に新しいブラウザ インスタンスからサイトにアクセスするときは、再度ログインする必要があります。
PHP では、php.ini の session.cookie_lifetime をゼロに設定して、これを実現できます。
asp.net - ASP.NETワーカープロセスがリサイクルされる原因は何ですか?
これが私の現在の質問です:
以下の回答によると、私の問題(以下で説明)はASP.NETワーカープロセスのリサイクルが原因であると推測しています。制限のため、InProcセッションストレージを使用していますが、移動する可能性はほとんどありません。すべてのセッションオブジェクトがシリアル化可能な他のタイプのストレージの場合。ただし、ワーカープロセスが頻繁にリサイクルされる理由はわかりません。私が知る限り、アプリディレクトリ内のファイルは変更されておらず、IISのオプションはこれは、プロセスが1,740分ごとにのみリサイクルされることを意味します。これは、実際のセッション損失よりもはるかに少ない頻度です。だから、私の質問は、ASP.NETワーカープロセスがリサイクルされる原因となる可能性のあるさまざまなケースは何ですか?
これが私の最初の質問です:
ASP.NETWebアプリケーションで発生する再現が難しい問題があります。アプリケーションには、ロードされ、いくつかのセッション変数を初期化する1つのメイン.aspxページがあります。このページは、ASP.NET AjaxSys.Net.WebRequest
クラスを使用して、別の.aspxページに繰り返しアクセスします。このページは、セッション変数を使用してデータベースクエリを実行し、メインページを更新します(メインページが再要求されることはありません)。
場合によっては、ページを一定期間使用した後、メインページで作成されたセッションがサブページに適切に引き継がれるHTTP要求が成功すると、要求の1つが新しいASP.NETセッション(すべてのセッション)を作成するように見えます。変数が失われ(コードで例外がスローされるため)、動的に要求されたページで新しいセッションIDが報告されます。つまり、突然、メインページがサーバーから切断されます。サーバーに関する限り、ユーザーはログインしなくなります。
セッションのタイムアウトではないことはほぼ間違いありません。タイムアウト時間はばかげたものに設定されています。これが発生するまでにかかる時間は変動しますが、セッションがタイムアウトするほど長くなることはありません。定数は次のようになります。セッションタイマーを更新します。Sys.Net.WebRequests
では、HTTP要求がASP.NETセッションとの接続を失う原因となる他に何が起こっている可能性がありますか?残念ながら、これが発生したときにネットワークトラフィックをスニッフィングしていないか、ASP.NETセッションCookieがスタックしていないかどうかを確認していました。
php - PHPでセッションを使用するための最新の、優れたプラクティスであり、最も簡単な方法は何ですか?
PHPのセッションは、前回使用したときから変更されているように見えたので、セッションを使用する簡単な方法を探していますが、同時に、比較的安全であり、優れた一般的な方法である必要があります。