10

Weblogic 10.3 をローカルで実行していますが、Weblogic 10.3 が生成する sessionId について質問があります。session.getId() を印刷すると、次のようなものが表示されます。

BBp9TAACMTglQ2TDFAKR4tpyXg73LZDQJ2PtT9x8htG1tWY122aa!869187422!1308677666322

これらの感嘆符とそれに続くもの、具体的には 2 番目のペア: !1308677666322 ? サーバーがそれを追加する場合と追加しない場合があるようです。同じブラウザを使用してアプリに 2 回目にログインすると、weblogic がそれを追加すると思います。このクッキーは何らかの形で関連していますか?

4

2 に答える 2

23

自分のアプリケーションからランダムに生成されたWeblogicJSessionIDをいくつか見る

BrYx4hyPZ4VSP9Wo4eU0OrqmhXMLFONbRHnpLFwRKZ9MSaf6wvYj!-314662473

BrYiFED29itaC4EBpWYM8RKVQQauHkvnTsA2OAKUPZXVc9oUD5fB!-784323496.

ここで、最初の!の後にセッションIDの一部があることに気付いた場合。すなわち314662473784323496

この番号は、Weblogicが実行中のJVM、つまり実行中のWeblogicサーバーに与える一意の識別子です。

アプリケーションに複数のサーバーがある場合、Weblogicは、セッションIDの一部であるこの9桁のJVM番号を使用して、セッションを正しいサーバーに戻す方法を認識しています。

weblogicサーバーを再起動するたびに、新しいJVM IDが生成され、そのweblogicサーバーが実行されている限りそれが使用されます。したがって、そのサーバーへのヒットはすべて、セッションIDの最後に同じIDを持ちます。

セッションIDの形式は次のとおりです。

JSESSIONID = SESSION_ID!PRIMARY_JVMID_HASH!SECONDARY_JVM_HASH!CREATION_TIME

したがって、プライマリが使用できない場合は、セカンダリにジャンプしようとします。セッションレプリケーションを有効にしている場合は、セッションデータを回復できます。ローカルで単一のサーバーのみを実行している場合、形式は単純です

JSESSIONID = SESSION_ID!PRIMARY_JVMID_HASH!CREATION_TIME

表示されない場合もありますが、通常、セッションIDがアドレスバーに表示されるかどうかはブラウザに依存します。

于 2011-06-22T10:36:58.710 に答える
0

WebLogic Server はこれらの ID を使用して、WebLogic クラスタ インメモリ レプリケーション モデルで HTTP セッション アフィニティを維持します。

HTTP セッション レプリケーションが有効になっている (weblogic.xml デプロイメント記述子で、デフォルトで無効になっている) Web アプリケーションの場合、WebLogic はクラスタで HTTP セッションのプライマリ コピーとバックアップ コピーを保持します。

クラスタのオーバーヘッドを回避するために、WebLogic プロキシ プラグイン (Web 層レイヤにデプロイされている) はセッション Cookie を解析し、すべてのリクエストをプライマリ コピーをホストする WLS にリダイレクトします。プライマリ セッションをホストする管理対象サーバーで障害またはオーバーヘッドが発生した場合、プロキシ プラグインはリクエストを HTTP セッションが存在するインスタンスにリダイレクトします。

プロキシ プラグインは、すべての WebLogic クラスタ メンバーの動的リストをペア (JVM ID / IP: ポート) として追跡し、すべてのリクエストを適切にリダイレクトします。

アプリでインメモリ レプリケーション機能が有効になっていない場合、Cookie には、HTTP セッションが存在する JVM ID (プライマリで一意のコピー) のみが含まれます。

于 2014-06-18T15:15:59.590 に答える