いつ/どのような条件でJSESSIONID
が作成されますか?
ドメインごとですか?たとえば、Tomcat アプリケーション サーバーがあり、複数の Web アプリケーションをデプロイする場合、JSESSIONID
コンテキスト (Web アプリケーション) ごとに異なるアプリケーションが作成されますか、それとも同じドメインである限り Web アプリケーション間で共有されますか?
いつ/どのような条件でJSESSIONID
が作成されますか?
ドメインごとですか?たとえば、Tomcat アプリケーション サーバーがあり、複数の Web アプリケーションをデプロイする場合、JSESSIONID
コンテキスト (Web アプリケーション) ごとに異なるアプリケーションが作成されますか、それとも同じドメインである限り Web アプリケーション間で共有されますか?
JSESSIONID
Cookie のもう1 つのソースに関する情報を次に示します。
Tomcat サーバーで実行される Java コードをデバッグしていました。コードのどこでも明示的に呼び出していませんでしたが、 Cookie がまだ設定されているrequest.getSession()
ことに気付きました。JSESSIONID
最後に、Tomcat の下の作業ディレクトリにある JSP に対応する、生成された Java コードを調べました。
好むと好まざるとにかかわらず、サーブレットから JSP を呼び出すJSESSIONID
と、作成されるようです。
追加: 次の JSP ディレクティブを追加することで、次のことがわかりました。
<%@ page session="false" %>
JSESSIONID
の設定をJSPで無効にすることができます。
ページに他の .jsp または .jspf (フラグメント) が含まれている場合は注意してください。設定しない場合
<%@ page session="false" %>
同様に、親ページは新しいセッションを開始し、JSESSIONID Cookie を設定します。
特に .jspf ページの場合、次のようなスニペットを使用して web.xml を構成すると、これが発生します。
<jsp-config>
<jsp-property-group>
<url-pattern>*.jspf</url-pattern>
</jsp-property-group>
</jsp-config>
それらの中でスクリプトレットを有効にするため。
カスタムタグを使用してJSPで生成されたリンクの場合、使用する必要がありました
<%@ page session="false" %>
JSPで
と
request.getSession().invalidate();
Struts アクションで