12

Tomcat 5.5のドキュメントで見つけることができるのは次のとおりです。

このアプリケーション内で ServletContext.getContext() を呼び出して、この仮想ホストで実行されている他の Web アプリケーションのリクエスト ディスパッチャを正常に返すようにする場合は、true に設定します。getContext() が常に null を返すようにするには、セキュリティを意識した環境で false (デフォルト) に設定します。

設定により、異なる Web アプリケーション間でセッション オブジェクトを共有できるようになるとコメントしているフォーラムの投稿をいくつか見つけましたcrossContext=trueが、これを述べている公式ドキュメントを見つけることができません。

Servlet.getContext() と異なる Web アプリケーション間でセッション状態を共有する機能との間に関係はありますか?

crossContext属性はTomcatで実際に何をしますか?

4

3 に答える 3

19

Single Sign-On Valveを使用して、Web アプリケーション間でセッションを共有できます。

crossContext=true同じ仮想ホスト内の異なる Web アプリケーション間で情報を共有したい場合に設定します。

たとえば、app1 は次のように呼び出します。

setAttribute("name", object);

別のアプリが呼び出すことができます

getContext("/app1").getAttribute("name");

情報を読むこと。crossContext が true に設定されていない場合、getContext("/app1") は null を返します。

ただし、crossContext の使用はまれであり、潜在的に安全ではありません。

于 2009-03-20T07:23:52.097 に答える
11

javadocからServletContext.getContext()

このメソッドを使用すると、サーブレットはサーバーのさまざまな部分のコンテキストにアクセスし、必要に応じてコンテキストからRequestDispatcherオブジェクトを取得できます。指定されたパスは「/」で始まる必要があり、サーバーのドキュメントルートを基準にして解釈され、このコンテナでホストされている他のWebアプリケーションのコンテキストルートと照合されます。

したがって、たとえば、別のWebアプリのページを含める場合は、crossContextをtrueに設定する必要があります。

于 2009-03-19T12:29:56.947 に答える
0

私はそれを自分で試してみましたが、魔法のセッション共有の副作用が見つからないため、 crossContext 属性はドキュメントの内容のみを実行します。

セッション状態を共有する方法があるかどうかを確認するために、別の質問を投稿しました。

于 2009-03-20T12:37:18.473 に答える