- Récupérez une version locale du répository et importez le projet dans Eclipse (version JEE)
- Ajoutez les facets "Dynamic Web Module 2.4" et "Java 1.6". Configurez le répertoire "/web" comme racine du contenu web et "/web/WEB-INF/classes" comme répertoire de compilation.
- Ajoutez le JAR "/lib/javax.mail-1.5.1.jar" au Classpath
- Ajoutez la librairie JUnit 4 (ou le JAR "/lib/junit-4.10.jar") au Classpath
- Ajoutez la librairie servlet-api.jar au Classpath
- Ajoutez le répertoire test/java au Buildpath
NB : la webapp se déploie sur une serveur Tomcat dans Eclipse en respectant la configuration décrite au paragraphe "Déploiement".
Le projet comporte des tâches Ant pour réaliser la compilation en vue d'une installation :
- clean : vide les répertoires de compilation
- dist : complile l'application et génère le WAR de destination.
Vous pouvez personnaliser les paramètres de compilation en créant un fichier build.properties et en surchargeant les propriétés Ant désirées (cf. fichier build.xml du projet).
Pour déployer l'application, vous devez disposer d'un serveur Apache Tomcat 6 :
- Le serveur doit être lancé avec le paramètre de JVM "-Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true". Ce paramètre peut être renseigné dans les paramètres de lancement JAVA_OPTS de Tomcat.
- Le connecteur HTTP doit être configuré pour utiliser le charset UTF-8 pour encoder les URL : paramètre 'URIEncoding="UTF-8"'
Etapes de déploiement :
-
Arrêter le serveur Tomcat (si besoin)
-
Copier le jar "/lib/javax.mail-1.5.1.jar" dans le répertoire "/lib" de Tomcat (cette librairie permet à l'application d'envoyer des emails).
-
Copier le war généré dans "/dist" (thesaurus.war par défaut) dans le repertoire "/webapps" de Tomcat.
-
Copier les 2 war "/lib/sesame/openrdf-sesame.war" et "/lib/sesame/openrdf-workbench.war" dans le repertoire "/webapps" de Tomcat. La version de OpenRDF Sesame mise à disposition ici est la 2.6.5 (version minimale compatible).
-
Ajouter une Resource de type javax.mail.Session avec le nom JNDI mail/thesaurus au context du war de l'application. Par exemple, créer le fichier "/conf/Catalina/localhost/thesaurus.xml" dans Tomcat avec le contenu suivant (en adaptant si nécessaire la valeur de 'mail.smtp.host' qui est l'adresse IP ou le nom du serveur SMTP) :
<?xml version="1.0" encoding="UTF-8"?> <Context> <Resource name="mail/thesaurus" auth="Container" type="javax.mail.Session" mail.smtp.host="127.0.0.1"/> </Context>
NB : Si la Session email n'est pas trouvée au démarrage de l'application, un warning (non bloquant) apparait dans les logs. L'application fonctionne alors, à l'exception du formulaire de contact et des logs d'erreurs par email.
Avant de pouvoir utiliser l'application, il faut créer le répository sesame :
- Accéder à l’URL http://localhost:8080/openrdf-workbench (remplacer "localhost" et "8080" si besoin en fonction de votre serveur).
- Cliquer sur le lien New repository
- Choisir le type Native Java Store, l'ID thesaurus et un title (le contenu de ce champ est libre).
- Cliquer sur Next, puis sur Create.
- Vous pouvez maintenant utiliser l'application !
L'application admet plusieurs paramétrages :
- Dans le web.xml
- Au travers des fichiers "*.properties"
- thesaurus.entries.base.uri : Racine des URI des thésaurus, pour la traduction vers l’URL de base de l’application, afin de garantir la navigation des données dans le cas où les URI des entrées ne correspondraient pas à des URL valides pour l’application Valeur par défaut : vide (pas de traduction)
- thesaurus.rdf.repository.url : URL d’accès au triple store RDF Valeur par défaut : http://localhost:8080/openrdf-sesame
- thesaurus.rdf.repository.id : Fichier paramétrage du déploiement de l’application Valeur par défaut : thesaurus
- thesaurus.email.from : Adresse "from" par défaut des emails envoyés par l'application (logs d’erreur lors du chargement automatique d’un vocabulaire).
- thesaurus.contact.nbAttachments : Nombre maximum de pièce-jointes dans le formulaire de contact. Valeur par défaut : 3.
- thesaurus.contact.attachmentsMaxSize : Taille maximum des pièce-jointes cumulées dans le formulaire de contact. Valuer par défaut : 1 048 576 (= 1Mo).
- thesaurus.contact.reCaptchaPrivateKey : Clé privée pour activer reCaptcha (https://www.google.com/recaptcha) dans le formulaire de contact.
- thesaurus.contact.reCaptchaPublicKey : Clé publique pour activer reCaptcha (https://www.google.com/recaptcha) dans le formulaire de contact.
Pour activer le chargement automatique des vocabulaires depuis un répertoire, il faut décommenter la partie du fichier "web.xml" correspondant au filter * VocabularyAutoload *. Ce filter admet plusieurs paramètres de configuration (init-param) :
- lookupDirectory : Obligatoire. Répertoire à scruter. Ce répertoire doit exister et être accessible en écriture à l’application (déplacement des fichiers traités). Seuls les fichiers « *.rdf » sont pris en compte, et les sous-répertoires ne sont pas pris en compte.
- emailTo : Adresse email de destination des rapports d'erreurs. Laisser vide pour ne pas envoyer d’email.
- refresh : Intervalle de scrutation du répertoire en millisecondes. Valeur par défaut : 10 000 (10 secondes).
- maxTries : Nombre de scrutations d'essai avant de déclarer un fichier en erreur lors du chargement. Valeur par défaut : 3.
- successDirectory : Répertoire de destination des vocabulaires chargés avec succès. Ce répertoire est créé s’il n’existe pas. Il doit être accessible en écriture. Les fichiers déplacés sont renommés avec une extension correspondant à un numéro de lot (numéro identique pour tous les fichiers traités lors de la scrutation). Valeur par défaut : "/success"
- failureDirectory : Répertoire de destination des vocabulaires dont le chargement n’a pas été effectué. Ce répertoire est créé s’il n’existe pas. Il doit être accessible en écriture. Les fichiers déplacés sont renommés avec une extension correspondant à un numéro de lot (numéro identique pour tous les fichiers traités lors de la scrutation) et un fichier de log portant ce même numéro de lot est créé dans le répertoire. Valeur par défaut : "/failure"
Lorsque qu'il est activé, le mécanisme de chargement automatique des vocabulaires scrute, à intervalle régulier (cf. paramètre refresh), le répertoire configuré (cf. paramètre lookupDirectory). Les fichiers situés dans ce répertoire (sans tenir compte des sous-répertoires) et dont le nom se termine par ".rdf" (sans tenir compte de la casse) sont alors importés en tant que vocabulaires, de façon séquentielle.
Tant qu'un fichier "lock.txt" est présent dans le répertoire, l'import n'a pas lieu. Cela permet de "verrouiller" le mécanisme, le temps d'y déposer des fichiers par exemple.
Une fois traités, les fichiers sont renommés avec un numéro de traitement (à la fin du nom) et déplacés dans les répertoires de succès ou d'échec (cf. paramètres successDirectory et failureDirectory). Dans le cas d'un échec, les logs du traitement sont également écrits dans un fichier portant le même numéro de traitement que le fichier dans le répertoire d'échec, et un email contenant ces logs est envoyé (cf. paramètre emailTo).
Sur la page d'un concept, il est possible d'afficher des liens permettant d'effectuer des recherches sur ce concept dans des corpus ouverts. Par défaut, l'application est configurée pour ces recherches dans Wikimedia Commons et Wiktionnaire.
Le paramétrage de ces liens se fait dans "fr/gouv/culture/thesaurus/service/open-searches_fr.properties", sous la forme de 3 clés à compléter pour chaque lien :
- search-x.name : le nom du corpus ouvert
- search-x.icon : l'URL de l'image à afficher
- search-x.url : l'URL du lien. Cette URL peut (doit!) être paramétrée avec :
- {0} : le libellé préférentiel du concept
NB : le "x" dans le nom des clés doit être remplacé par un chiffre (search-1.name, search-2.name, etc.).