JasperReports server 3.7.1 sous Tomcat 5.5 ========================================== Pour l'installation sous Debian Lenny, veuillez a bien respecter les étapes dans cette ordre. En effet Debian a packager différement le serveur Tomcat 5.5 pour correspondre a sa hiérarchie de fichier. Fichiers sources ---------------- Il faut recuperer les sources suivants * Archive de `JasperServer `_ (fichier jasperserver-ce-3.7.0-bin.zip) * Driver `JDBC `_ pour PostgreSQL Installation des paquets ------------------------ Java ^^^^ En premier nous devons installer le JDK de java en version 6 .. code-block:: bash apt-get install sun-java6-jdk Tomcat ^^^^^^ Ensuite il faut installer Tomcat 5.5 .. code-block:: bash apt-get install tomcat5.5 PostgreSQL ^^^^^^^^^^ Installation de PostgreSQL 8.3 .. code-block:: bash apt-get install postgresql-8.3 Configuration ------------- PostgreSQL ^^^^^^^^^^ Nous devons nous connecter en tant qu'utilisateur **postgres** pour effectuer les opérations d'administration .. code-block:: bash $ sudo su - postgres En tant qu'utilisateur **postgres**, nous devons créer un utilisateur ainsi qu'une base de données .. code-block:: bash # En premier l'utilisateur $ createuser -S -D -R -P -E jasperserver Saisissez le mot de passe pour le nouveau role : Saisissez le a nouveau : # Ensuite la base de donnees $ createdb -E UTF-8 -O jasperserver jasperserver "BDD pour jasper server" Si vous souhaitez utiliser la BI avec JasperServer il sera utile d'avoir un base de données propre pour l'extraction du cube OLAP afin de ne pas pénaliser la base de production. Pour cela nous utiliserons un utilisteur et une base de données séparés. .. code-block:: bash # En premier l'utilisateur $ createuser -S -D -R -P -E jasperanalysis Saisissez le mot de passe pour le nouveau role : Saisissez le a nouveau : # Ensuite la base de donnees $ createdb -E UTF-8 -O jasperanalysis jasperanalysis "BDD pour la BI" Jasper Server ^^^^^^^^^^^^^ Décompresser l'archive jasperserver-ce-3.7.0-bin.zip .. code-block:: bash unzip jasperserver-ce-3.7.0-bin.zip Avant de poursuivre, il faut stopper le service Tomcat .. code-block:: bash invoke-rc.d tomcat5.5 stop et position la variable d'environnement **JAVA_HOME** .. code-block:: bash export JAVA_HOME=/usr/lib/jvm/java-6-sun/jre/ dans le dossier buildomatic de l'archive décompressée, je trouve la commande **js-ant** c'est a partir de celle ci que nous allons effectuer toutes les manipulations. Nous allons créer le fichier default_master.properties a partir d'un des 2 exemples (prendre celui de PostgreSQL) .. code-block:: bash cd jasperserver-ce-3.7.0-bin/buildomatic/ cp ./sample_conf/inst-postgresql_master.properties ./default_master.properties modifier les lignes ci-dessous en les dé-commentant ou les modifiant .. code-block:: ini appServerType = tomcat5 appServerDir = /usr/share/tomcat5.5 # database type dbType=postgresql # database location and connection settings dbHost=localhost dbUsername=jasperserver dbPassword=jasperserver # JasperServer db name, sample db names js.dbName=jasperserver # web app name # (set one of these to deploy to a non-default war file name) webAppNameCE = jasperserver Après avoir modifier les paramètres ci-dessus, il faut executer les commande ci-dessous (et dans cet ordre) .. code-block:: bash # initialisation de la base de données ./js-ant init-js-db-ce # Import des droits et config minimal en base ./js-ant import-minimal-ce # Déploiemennt de l'application ./js-ant deploy-webapp-ce ensuite il faut creer un lien symbolique dans le répertoire **/etc/tomcat5.5/Catalina/localhost/** vers le fichier de context .. code-block:: bash cd /etc/tomcat5.5/Catalina/localhost ln -s /usr/share/tomcat5.5/webapps/jasperserver/META-INF/context.xml ./jasperserver.xml Il faut ensuite ajouter des droits de lecture sur un fichier .. code-block:: bash vi /etc/tomcat5.5/policy.d/04webapps.policy et y ajouter dans la partie .. code-block:: text grant codeBase "file:${catalina.home}/bin/tomcat-juli.jar" { ... permission java.io.FilePermission "/usr/share/tomcat5.5/webapps/jasperserver/WEB-INF/classes/logging.properties", "read"; }; Il faut editer ensuite le fichier .. code-block:: bash vi /etc/tomcat5.5/policy.d/50user.policy .. code-block:: text grant codeBase "file:/usr/share/tomcat5.5/webapps/jasperserver/-" { permission java.security.AllPermission; }; Pour que le fichier de log se mettent dans le dossier /var/log/tomcat55 au lieu de WEB-INF/logs, il faut editer le fichier WEB-INF/log4j.properties et modifier ces lignes en mettant ceci (le dossier /var/log/tomcat55 appartient déjà à l'utilisateur tomcat) .. code-block:: text # pour le log principal log4j.appender.fileout.File=/var/log/tomcat5.5/jasperserver.log # Pour tracer les requetes de jasper analysis log4j.appender.jasperanalysis.File=/var/log/tomcat5.5/jasperanalysis.log Ajout des droits de l'utilisateur tomcat55 au dossier jasperserver .. code-block:: bash chown -R tomcat55:root /usr/share/tomcat5.5/webapps/jasperserver/ Installer le driver PostgreSQL (postgresql-8.1-407.jdbc3.jar fournit dans l'archive jasper) dans /usr/share/tomcat5.5/common/lib (Parfois celui ci s'installe automatiquement) Il faut également désactiver un paramètre de sécurité, pour cela ouvrer le fichier /etc/default/tomcat55 et ajouter ceci à la fin .. code-block:: text # Modification des réglages pour JasperReport Server TOMCAT5_SECURITY=no pour que la machine virtuelle puisse charger toutes les classes, il faut augmenter certains paramètres mémoires, mais également remplacer des packages par d'autres .. code-block:: text # Modification pour JasperServer JAVA_OPTS="-Djava.awt.headless=true" JAVA_OPTS="$JAVA_OPTS -Xms128m -Xmx512M" JAVA_OPTS="$JAVA_OPTS -Djavax.xml.soap.MessageFactory=org.apache.axis.soap.MessageFactoryImpl" JAVA_OPTS="$JAVA_OPTS -Djavax.xml.soap.SOAPConnectionFactory=org.apache.axis.soap.SOAPConnectionFactoryImpl" JAVA_OPTS="$JAVA_OPTS -Djavax.xml.soap.SOAPFactory=org.apache.axis.soap.SOAPFactoryImpl" JAVA_OPTS="$JAVA_OPTS -Djavax.xml.transform.TransformerFactory=org.apache.xalan.processor.TransformerFactoryImpli" Ensuite il faut redemarrer le serveur Tomcat .. code-block:: bash invoke-rc.d tomcat5.5 start Troubles et résolution ---------------------- Erreur: net/sf/jasperreports/engine/fill/JRExtendedIncrementerFactory ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Le serveur n'a pas assez de mémoire pour charger toutes les classes Assuré vous que le fichier /etc/default/tomcat55 prenne bien en compte les paramètres mémoires. Message d'erreur ^^^^^^^^^^^^^^^^ Si vous obtenez ce message **jsexception.error.creating.connection** vous avez un problème de base de données. Noyau Linux GR Security ^^^^^^^^^^^^^^^^^^^^^^^ Si vous rencontrez des problèmes avec un noyau Linux GRsec, passer à un noyau standard, je continu mes investigations pour voir ce qui créer les Segfaults de la machine virtuelle Java.