web-dev-qa-db-fra.com

Tomcat 7 - Où dois-je définir les "propriétés système"?

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
27
LuckY07

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
33
user2335780

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.

12

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.

5
igr

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?

3
LuckY07

Si vous essayez de définir des variables pour un serveur s'exécutant dans Eclipse:

  1. Sélectionnez Exécuter> Exécuter les configurations.
  2. Assurez-vous que votre serveur est sélectionné
  3. Sélectionnez l'onglet Environnement
  4. Cliquez sur 'Nouveau' pour ajouter une nouvelle variable
1
Brent Sandstrom