Site icon Blog Zenika

REST avec Spring 3.0 et Solr (1ère partie)

Spring 3.0 introduit un support serveur et client pour REST. Nous allons illustrer l’utilisation de ce support dans une série d’articles. Afin de pimenter tout cela, les données manipulées seront récupérées depuis une instance de Solr, le serveur d’indexation basé sur Lucene.

Le cas d’utilisation

Notre application Web va exposer des services REST pour que l’on puisse accéder à ses données. Le contrôleur REST délègue les requêtes à un serveur d’indexation dédié, Solr, interrogé avec une API Java, sur HTTP. La figure suivante représente cette architecture.

Pourquoi voulons-nous mettre un contrôleur REST devant le serveur d’indexation, puisque celui-ci propose finalement le même genre d’interface (HTTP/XML) ? Il peut y avoir de nombreuses raisons à cela :

Voilà pour le cas d’utilisation, commençons immédiatement par installer et démarrer le serveur Solr.

Le serveur Solr

Solr est un serveur d’indexation basé sur Lucene. Il donne une dimension « entreprise » à Lucene : accès par HTTP, optimisation des index automatique, gestion des accès concurrents, etc. Solr peut être téléchargé depuis son site. Nous utilisons ici la version 1.4. Une fois l’archive téléchargée, la décompresser dans un répertoire. Nous allons lancer le serveur Solr, qui utilise par défaut le conteneur Web Jetty. Ouvrir une ligne de commande et aller dans le répertoire example de l’installation. Lancer ensuite le serveur avec la commande suivante :

/solr/example$ java -jar start.jar

Le serveur Jetty se lancer alors sur le port 8983. Il faut mettre un peu de contenu dans le serveur avant de pouvoir l’exploiter, nous allons donc indexer quelques documents fournis dans la distribution. Ouvrir une ligne de commande dans le répertoire example/exampledocs de la distribution et lancer la commande suivante :

/solr/example/exampledocs$ java -jar post.jar *.xml

Solr propose une interface d’administration permettant d’effectuer des requêtes : http://localhost:8983/solr/admin/.

Par défaut, le formulaire de requête contient « solr ». Lancer la recherche en appuyant sur le bouton « Search ». On obtient alors une réponse XML, qui contient en entête des détails sur la requête (paramètres, temps d’exécution, etc.) et les résultats retournés, dans notre cas un document qui contient le mot « solr » dans un de ces champs.

Nous verrons dans la seconde partie comment attaquer le serveur Solr depuis un contrôleur REST Spring 3.0 avec le client Java SolrJ. La troisième partie sera consacrée à l’accès au contrôleur REST avec le support REST client de Spring 3.0, le RestTemplate. Bonnes fêtes !

Auteur/Autrice

Quitter la version mobile