Mon application Web rencontre un problème depuis la mise à niveau vers Tomcat 7. Ma session passera à null
après ma connexion et mon tentative de faire quoi que ce soit (soumission d'une demande). J'ai lu que le réglage suivant peut aider:
org.Apache.Tomcat.util.http.ServerCookie.FWD_SLASH_IS_SEPARATOR=false
Est-ce que quelqu'un sait où mettre ceci? Cela devrait-il être défini dans web.xml
, context.xml
ou ailleurs?
L'autre chose que je veux vérifier est la suivante:
org.Apache.catalina.STRICT_SERVLET_COMPLIANCE
Vous pouvez définir n’importe laquelle des propriétés du système dans
Apache-Tomcat-7.0.33\conf\catalina.properties
fichier. Ajouter votre entrée dans ce fichier devrait résoudre votre problème .
Par exemple.
environment=local
Vous pouvez définir les propriétés système dans Tomcat en créant un fichier setenv.sh
dans le répertoire/bin . J'ai procédé comme suit pour définir les propriétés système.
export Java_OPTS="-Dmyprojectvar.subname=value -Danothervariable=value -Danother.variable=value"
Rappelles toi:
Il n'y a pas d'espace entre le export Java_OPTS
et le =
. De plus, le symbole &
est différent, utilisez .
.
Maintenant, lancez votre catalina.sh
pour démarrer Tomcat.
Vous pouvez définir ces propriétés système dans la ligne de commande qui démarre Tomcat. Par exemple, vous pouvez avoir le fichier setenv.bat
(sur setenv.sh
si vous êtes sur Linux) dans le dossier Tomcats bin
avec le contenu suivant:
set "CATALINA_OPTS=%CATALINA_OPTS% -Dfile.encoding=UTF8 -Dorg.Apache.catalina.STRICT_SERVLET_COMPLIANCE=true -Duser.timezone=GMT -Xmx1024m -XX:MaxPermSize=256m"
Ce fichier est le moyen préféré pour définir les propriétés de Tomcat.
Désormais, FWD_SLASH_IS_SEPARATOR
est défini par défaut sur false
. Si vous définissez STRICT_SERVLET_COMPLIANCE
sur true
, la valeur de FWD_SLASH_IS_SEPARATOR
sera également définie sur true
(ainsi que les valeurs de certaines autres propriétés). Cependant, vous pouvez le définir explicitement sur false
, par exemple. L'utilisation des éléments suivants dans votre fichier setenv
convient parfaitement:
-Dorg.Apache.catalina.STRICT_SERVLET_COMPLIANCE=true
-Dorg.Apache.Tomcat.util.http.ServerCookie.FWD_SLASH_IS_SEPARATOR=false
C’est aussi ce que je suggère lorsque quelqu'un définit STRICT_SERVLET_COMPLIANCE
sur true
, pour toujours désactiver le FWD_SLASH_IS_SEPARATOR
. Sinon, la valeur du chemin du cookie sera envoyée entre guillemets (par exemple, "\"
) et tous les navigateurs actuels, à l'exception d'Opera, ne le reconnaissent pas et le feraient par exemple. ne pas suivre la session.
LA SOLUTION:
sessionCookiePathUsesTrailingSlash="false"
Nous avons en fait compris comment résoudre ce problème. C’était un paramètre Tomcat 7 que nous devions définir. Nous l'avons placé dans server.xml
, sous la balise comme suit:
<Context path="/test" reloadable="true" docBase="c:\webapp\test"
workDir="c:\webapp\test" sessionCookiePathUsesTrailingSlash="false"/>
Lorsque nous déboguions le problème et examinions le chemin des cookies, nous nous sommes aperçus qu’il mettait une barre oblique inverse \
après le nom de la webapp. Pour notre test webapp, le chemin était donc /test/
au lieu de /test
. Cela a causé beaucoup de problèmes.
Quelqu'un d'autre a-t-il eu à gérer ce paramètre dans Tomcat 7? Ou avez un problème similaire?
Si vous essayez de définir des variables pour un serveur s'exécutant dans Eclipse: