wiki:Tomcat

Paramétrage de Tomcat

Pour permettre à des webapps SCENARIserver de fonctionner correctement dans le serveur de servlets Tomcat il est nécessaire d'y apporter certaines modifications de paramétrage.

Path d'installation

Un bug de la JVM impose d'installer SCENARIserver dans un chemin ne contenant pas de caractère 'espace'. Si tel n'est pas le cas, vous obtiendrez le message d'erreur 'java.net.URISyntaxException: Illegal character in path ...'.

Multi-webapp SCENARI

L'utilisation de plusieurs webApp SCENARI sur le même Tomcat nécessite un paramétrage permettant le partage de l'accès à OpenOffice.

  • Ouvrir le fichier "---Tomcat---/conf/catalina.properties";
  • Modifier la ligne "shared.loader" comme suit (en adaptant la syntaxe à l'OS et en ajustant le path d'OpenOffice) par exemple :
    • Windows: shared.loader=file:///C:/Program Files/OpenOffice.org 3/URE/java/jurt.jar,file:///C:/Program Files/OpenOffice.org 3/URE/java/ridl.jar,file:///C:/Program Files/OpenOffice.org 3/Basis/program/classes/unoil.jar
    • Linux: shared.loader=/opt/openoffice.org3/basis-link/ure-link/share/java/jurt.jar,/opt/openoffice.org3/basis-link/ure-link/share/java/ridl.jar,/opt/openoffice.org3/basis-link/program/classes/unoil.jar

NOTE TECHNIQUE : ne pas inclure juh.jar pour ds pbs de classLoader.

Connecteurs

Pour éviter des problèmes d'encodage de nom de fichier il est important de forcer Tomcat à traiter toutes les url en UTF-8.
Il est également important d'augmenter la taille permise aux requêtes qui est de 8ko par défaut dans Tomcat, SCENARI peut être amené à produire des requêtes très longues (surtout à partir de SCENARI 4) Editez le fichier /opt/SCENARIserver/tomcat/conf/server.xml et recherchez le paramétrage des Connector (vers la ligne 66).
Pour chaque Connector déclaré, il convient d'ajouter:

  • URIEncoding="UTF-8"
  • maxHttpHeaderSize="65536" A ajuster selon la taille de vos ateliers
    [root@myserver setup]# nano /opt/SCENARIserver/tomcat/conf/server.xml
    ...
         <Connector port="8080" protocol="HTTP/1.1" 
                   connectionTimeout="20000" 
                   redirectPort="8443" URIEncoding="UTF-8" maxHttpHeaderSize="65536"/>
    ...
    

interactiveGenerator

A partir de SCENARI 4 les modèles documentaires peuvent embarquer des générateurs interactifs (interactiveGenerator). Ceux-ci utilisent des URLs complexes comportant entre autres des slash "/" encodés (c.a.d. des chaînes %2F).

Tomcat

Par défaut Tomcat ne permet pas ce type de caractère dans les URLs (c.f.  ce bulletin de sécurité Tomcat).
If faut donc démarrer Tomcat avec la variable système org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH à true
Pour ceci il faut soit :

  • ajouter -Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true à la ligne de commande qui démarre Tomcat;
  • ouvrir le fichier fichier "---Tomcat---/conf/catalina.properties" et ajouter la ligne :
    org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true
    

Apache

Si vous utilisez Tomcat derrière un proxy Apache il faut :

  • paramétrer Apache pour accepter les slash encodés dans les URLs en ajoutant la directive "AllowEncodedSlashes On" au paramétrage du virtual host qui fait le proxy vers Tomcat (c.f.  la documentation Apache);
  • paramétrer Apache pour ne pas canoniser les URL au niveau des directives ProxyPass en y ajoutant la directive "nocanon" (c.f.  la documentation Apache).

Voici un exemple de Virtualhost Apache:

<VirtualHost *:80>
    ServerName xxx.yyy.com
    AllowEncodedSlashes On
    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>
    ProxyPass         /zzz  http://localhost:8080/zzz nocanon
    ProxyPassReverse  /zzz  http://localhost:8080/zzz
</VirtualHost>

ou :

  • "xxx.yyy.com" est l'url de votre serveur
  • "zzz" est le nom de la webapp SCENARIserver