Installation

  1. Uploader l'archive de Tomcat via FTP sur votre iSeries et placez-le dans le répertoire de l'IFS de votre choix, comme exemple ici on prendra /home/upload.
  2. Extraire le fichier via QShell (STRQSH).
    cd /home/upload
    jar -xvf apache-tomcat-8.0.33.zip

    Pour la suite de la procédure, il est nécessaire d'éditer des fichiers de configuration de Tomcat. C'est assez peu pratique à faire en QSH, nous vous recommandons donc d'utiliser un client FTP pour le faire. A noter que suivant le client FTP utilisé, il peut être nécessaire d'envoyer les commandes FTP suivantes pour que le listing des fichiers s'affiche bien :

    site namefmt 1
    site listfmt 1

    Pour information, les manipulations décrites dans cette procédure ont été faites avec WinSCP.

  3. Paramétrez la variable d'environnement JAVA_HOME. Cette information doit être ajoutée dans les fichiers de configuration de Tomcat. Editez le fichier : /home/upload/apache-tomcat-8.0.33/bin/setclasspath.sh. Rajoutez la ligne suivante vers le début du fichier : export -s JAVA_HOME=/QOpenSys/QIBM/ProdData/JavaVM/jdk70/64bit/ 

    Tomcat 8 nécessite une JVM JAVA 7 minimum. Pour connaître les version de Java compatibles avec votre AS/400, référez-vous à cette fiche d'IBM : http://www-01.ibm.com/support/docview.wss?uid=nas8N1019917

    Il peut être nécessaire d'installer la version nécessaire de JAVA, elles ne sont pas forcément fournies par défaut (uniquement à partir de la V7R2).




    Il est nécessaire de pointer vers un JDK au minimum en version 7 pour Tomcat 8. Vous pouvez également utiliser un JDK 32 bit en modifiant le chemin en conséquence. Si vous n'avez pas de répertoire jdk70 ou jdk71 dans l'emplacement spécifié, ils sont intégrés dans des PTF d'IBM, mettez à jour votre AS/400.


  4. Démarrez Tomcat.
    1. Vérifiez la disponibilité des ports utilisés par Tomcat (8005, 8080, et 8009 par défaut). Utilisez la commande NETSTAT OPTION(*CNN) pour vérifier les ports en cours d'utilisation. S'ils sont utilisés, éditez le fichier de configuration /home/upload/apache-tomcat-8.0.33/conf/server.xml et remplacez les valeurs des connecteurs par d'autres ports disponibles de votre choix. Si vous souhaitez faire tourner plusieurs instances de Tomcat sur votre iSeries, il vous faudra différentes valeurs de ports pour chacune de ces instances.
    2. Mettre à jour la configuration de Tomcat Web Manager, pour tester que le serveur fonctionne.
      • Éditez /home/upload/apache-tomcat-8.0.33/conf/tomcat-users.xml
      • Ajoutez <role rolename= "manager-gui”/> après les rôles spécifiés
      • Ajoutez <user username="admin” password=”admin” roles=”manager-gui”/> après les utilisateurs existants 


      Le login/mot de passe très simples sont bien sûrs à des fins de test et ne sont pas à laisser tels quels par la suite, en particulier sur les systèmes de production.

    3. Démarrez Tomcat. A ce stade, Tomcat est configuré correctement, et on peut le démarrer via le script startup.sh dans le répertoire /home/upload/apache-tomcat-8.0.33/bin. 
    4. Vérifiez que Tomcat tourne correctement.

Tomcat est désormais bien installé. Si vous souhaitez l'arrêter, lancez la commande  /home/upload/apache-tomcat-8.0.33/bin/shutdown.sh en QShell.

 

 

Optimisation

La JVM d'IBM a un comportement différent de celle d'Oracle en terme d'allocation de mémoire, elle alloue la mémoire par tranches de taille fixe correspondant au paramètre Xms de la JVM. A chaque nouvelle allocation de mémoire, le Garbage Collector est déclenché plusieurs fois, d'abord à 70% d'utilisation de la mémoire allouée puis à 90%.

Le problème est que par défaut, le paramètre Xms vaut 4 Mo, ce qui fait que beaucoup de Garbage Collections sont déclenchées à chaque démarrage de Tomcat (puisqu'il prend quelques centaines de Mo de mémoire), saturant probablement le CPU du serveur.

Il est donc nécessaire d'augmenter la valeur du paramètre Xms pour que la mémoire soit allouée par grandes tranches, ne déclenchant ainsi pas le Garbage Collector sans arrêt pour rien.

Allez dans le fichier /home/upload/apache-tomcat-8.0.33/bin/catalina.sh et rajoutez la ligne suivante au début du fichier (mais après le #!/bin/sh)  :

JAVA_OPTS="$JAVA_OPTS -Xms256m"

Ici on le fixe à 256 Mo, mais vous pouvez spécifier une valeur plus appropriée à vos besoins suivant le degré de granularité que vous souhaitez.

 

En cas de problèmes

  • Tomcat intègre un mode spécial pour s'adapter au fonctionnement d'un AS/400. En cas normal, il est censé détecter tout seul l'OS de la machine, mais il y a parfois eu des bugs qui font que ce n'est pas le cas.
    Dans ce cas, on peut forcer le mode AS/400 en éditant le fichier /home/upload/apache-tomcat-8.0.33/bin/startup.sh pour forcer la valeur de la propriété os400 à true, comme ceci :
  • En cas de problèmes à l'exécution (le bureau apparaît mais aucune application ne se lance), il faut rajouter la ligne suivante dans catalina.sh :
    JAVA_OPTS="$JAVA_OPTS -Djava.awt.headless=true" 
  • Comme toujours, les logs de Tomcat sont dans le répertoire log, et contiennent en général des informations pertinentes.

Manipulation en ligne de commande

Il peut être intéressant de lancer ou d'arrêter Tomcat depuis une ligne de commande classique, pour pouvoir par exemple le démarrer via QSTRUP ou depuis un programme CL quelconque.

Pour cela, vous pouvez utiliser les commandes suivantes :

SBMJOB CMD(QSH CMD(‘/home/upload/apache-tomcat-8.0.33/bin/startup.sh’))
SBMJOB CMD(QSH CMD(‘/home/upload/apache-tomcat-8.0.33/bin/shutdown.sh’))

Vous pouvez bien sûr les adapter pour les faire tourner dans le sous-système de votre choix, avec l'utilisateur que vous souhaitez, et ainsi de suite.

Une documentation un peu ancienne (faite pour Tomcat 5 à l'époque) mais détaillée sur le sujet est ici : http://www.compomentis.com/papers/iSeriesTomcat.html

 

  • Aucune étiquette