Cet article décrit comment déclarer une ressource de type javax.jcr.Repository dans l’annuaire JNDI de Glassfish. Il s’agit en l’occurrence de pointer vers un serveur Jackrabbit (deployment model 3). La version Jackrabbit utilisée est 1.3.
-
Copier les librairies nécessaires à un client Jackrabbit dans le répertoire GLASSFISH_HOME/lib
-
jcr-1.0.jar, jackrabbit-api-1.3.jar, jackrabbit-classloader-1.3.jar, jackrabbit-core-1.3.jar, jackrabbit-jcr-commons-1.3.jar, jackrabbit-jcr-rmi-1.3.jar, jackrabbit-text-extractors-1.3.jar, commons-collections-3.1.jar, slf4j-log4j12-1.0.jar, concurrent-1.3.4.jar, lucene-core-2.0.0.jar
-
Dans la console d’administration de Glassfish, sélectionner le menu Resources → JNDI → Custom Resources
-
Ajouter une ressource JNDI (bouton New…)
-
JNDI Name = jcr/myRepository
-
Resource Type = javax.jcr.Repository
-
Factory Class = org.apache.jackrabbit.rmi.client.ClientRepositoryFactory
Il faut maintenant configurer l’application web pour pointer vers la ressource créée précédemment :
Fichier web.xml
<resource-ref>
<description>Repository JackRabbit</description>
<res-ref-name>jcr/repository</res-ref-name>
<res-type>javax.jcr.Repository</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
Fichier sun-web.xml
<resource-ref>
<res-ref-name>jcr/repository</res-ref-name>
<jndi-name>jcr/myRepository</jndi-name>
</resource-ref>
Après redémarrage de Glassfish, la ressource JCR peut être récupérée via un lookup JNDI :
InitialContext ctx = new InitialContext();
Repository repository = (Repository) ctx.lookup("java:comp/env/jcr/repository");