web-dev-qa-db-ja.com

Tomcat 7-「システムプロパティ」の設定場所

Tomcat 7へのアップグレード以降、webappに問題があります。ログインして何かを実行しようとすると(リクエストを送信して)、セッションはnullになります。次の設定が役立つ場合があることを読みました。

org.Apache.Tomcat.util.http.ServerCookie.FWD_SLASH_IS_SEPARATOR=false

誰がこれを設定する場所を知っていますか?これは、web.xmlcontext.xml、または他の場所で設定する必要がありますか?

もう1つ確認したいのは、次のことです。

org.Apache.catalina.STRICT_SERVLET_COMPLIANCE
27
LuckY07

以下のシステムプロパティを設定できます。

Apache-Tomcat-7.0.33\conf\catalina.properties

ファイル。このファイルにエントリを追加すると、問題が解決するはずです。

例えば。

environment=local
35
user2335780

/ binディレクトリにsetenv.shファイルを作成することにより、Tomcatでシステムプロパティを設定できます。システムプロパティを設定するには、次のことを行いました。

export Java_OPTS="-Dmyprojectvar.subname=value -Danothervariable=value -Danother.variable=value"

覚えておいてください:

export Java_OPTS=の間にスペースはありません。また、シンボル&は異なります。.を使用します。

次に、catalina.shを実行してTomcatを起動します。

12

これらのシステムプロパティは、Tomcatを起動するコマンドラインで設定できます。たとえば、Tomcats binフォルダーに次の内容のファイルsetenv.bat(Linuxの場合はsetenv.sh)を含めることができます。

set "CATALINA_OPTS=%CATALINA_OPTS% -Dfile.encoding=UTF8 -Dorg.Apache.catalina.STRICT_SERVLET_COMPLIANCE=true -Duser.timezone=GMT -Xmx1024m -XX:MaxPermSize=256m"

このファイルは、Tomcatのプロパティを設定する好ましい方法です。

現在、FWD_SLASH_IS_SEPARATORはデフォルトでfalseに設定されています。 STRICT_SERVLET_COMPLIANCEtrueに設定すると、FWD_SLASH_IS_SEPARATORの値もtrue(およびその他のプロパティの値)に設定されます。ただし、明示的にfalseに設定できます。 setenvファイルで次を使用することは問題ありません。

-Dorg.Apache.catalina.STRICT_SERVLET_COMPLIANCE=true
-Dorg.Apache.Tomcat.util.http.ServerCookie.FWD_SLASH_IS_SEPARATOR=false

これは、誰かがSTRICT_SERVLET_COMPLIANCEtrueに設定し、常にFWD_SLASH_IS_SEPARATORを無効にするときにもお勧めします。それ以外の場合、Cookie Path値は引用符で囲まれて送信され(例:"\")、Operaを除く今日のすべてのブラウザーはこれを認識せず、たとえばセッションを追跡できません。

5
igr

ソリューション:

sessionCookiePathUsesTrailingSlash="false"

実際にこれを解決する方法を見つけました。設定が必要なTomcat 7の設定でした。次のように、タグの下のserver.xmlに配置しました。

<Context path="/test" reloadable="true" docBase="c:\webapp\test" 
workDir="c:\webapp\test" sessionCookiePathUsesTrailingSlash="false"/>

問題をデバッグしてcookieのパスを見ると、webapp名の後に\のバックスラッシュが付いていることに気づいたので、テストwebappの場合は、/test/ではなく/testにパスを設定していました。これは多くの問題を引き起こしました。

Tomcat 7で他の誰かがこの設定を処理する必要がありましたか?または、同様の問題がありますか?

3
LuckY07

Eclipseで実行されているサーバーの変数を設定しようとしている場合:

  1. [実行]> [実行構成]を選択します
  2. サーバーが選択されていることを確認してください
  3. 環境タブを選択
  4. 「新規」をクリックして、新しい変数を追加します
1
Brent Sandstrom