Les applications qui s'exécutent sur Liberty peuvent accéder aux bases de données NoSQL, telles que CouchDB. Pour accéder à une instance CouchDB dans Liberty, il est conseillé de
configurer le connecteur à l'aide du client Java Cloudant.
Avant de commencer
Liberty prend en charge la configuration du client Java Cloudant mais ne prend pas en charge les bibliothèques requises. Vous devez utiliser la version 2.2.0 ou des versions
ultérieures du client Java Cloudant. Pour télécharger les bibliothèques requises de différentes sources, comme par exemple GitHub ou le plug-in Eclipse Maven, afin d'obtenir le client
Java Cloudant et ses dépendances, procédez comme suit :
<dependency>
<groupId>com.cloudant</groupId>
<artifactId>cloudant-client</artifactId>
<version>2.2.0</version>
</dependency>
Pourquoi et quand exécuter cette tâche
Pour permettre à une application d'utiliser l'API du client Java Cloudant, vous devez configurer les éléments suivants dans le fichier
server.xml :
- Une bibliothèque partagée pour le pilote et les bibliothèques dont il dépend
- Une référence à la bibliothèque partagée
Une application peut ensuite accéder directement à l'API client sans aucune configuration additionnelle du serveur. Pour plus d'informations, voir la
documentation Cloudant. L'instance ClientBuilder peut créer des instances CloudantClient
qui peuvent ensuite être utilisées pour rechercher et créer des vues de base de données ainsi que pour d'autres tâches. Une instance Database permet à l'application d'effectuer des opérations de création, de mise à jour et de modification.
Pour que les applications puissent injecter une instance ClientBuilder ou Database, vous devez activer la fonction cloudant-1.0 et
configurer les ressources Cloudant dans la configuration du serveur. La phase d'exécution de Liberty gère le cycle de vie des instances CloudantClient qu'elle utilise pour créer des instances Database.
- Installez la bibliothèque client Java Cloudant et ses dépendances dans un emplacement auquel votre application et l'environnement d'exécution Liberty ont accès.
Par exemple, placez les fichiers du pilote Cloudant et ses dépendances dans le répertoire ${server.config.dir}/lib.
- Mettez à jour la configuration du serveur pour mettre une instance ClientBuilder ou Database à la disposition de votre application à l'aide des recherches
de ressources ou des injections de ressources.
En particulier, vous pouvez utiliser JNDI pour mettre à jour la configuration du serveur en ajoutant la fonction cloudant-1.0 au gestionnaire de fonction dans le fichier
server.xml :
<featureManager>
<feature>cloudant-1.0</feature>
<feature>jndi-1.0</feature>
</featureManager>
A faire : La fonction JNDI est uniquement requise lorsque vous utilisez JNDI pour rechercher des ressources.
Cependant, cette fonction n'est pas requise si vous utilisez une injection de ressources.
- Configurez une bibliothèque partagée pour les fichiers du pilote Cloudant dans le fichier server.xml du serveur Liberty :
<library id="cloudantLib">
<fileset dir="${shared.resource.dir}cloudant" includes="cloudant-client-2.2.0.jar commons-codec-1.6.jar commons-io-2.4.jar gson-2.2.4.jar"/>
</library>
Des bibliothèques supplémentaires peuvent être requises selon les API utilisées par votre application. Pour plus d'informations, voir la
documentation du client Java Cloudant.
- Configurez un élément cloudant ayant des références à la bibliothèque partagée et à l'alias d'authentification des conteneurs par défaut créés dans les étapes précédentes.
Vous pouvez spécifier l'URL de la base de données locale ou distante, ou un compte DBaaS Cloudant (DBaaS = base de données en tant que service). Veillez à ne pas spécifier les deux.
- L'exemple suivant spécifie l'URL de la base de données :
<cloudant id="myCloudant" libraryRef="cloudantLib" url="http://example.com:5984" username="your_cloudant_username" password="your_cloudant_password"/>
- L'exemple suivant spécifie le compte :
<cloudant id="myCloudant" libraryRef="cloudantLib" account="account_name" username="your_cloudant_username" password="your_cloudant_password" />
Conseil : La configuration d'un nom JNDI permet à une application de rechercher l'instance ClientBuilder.
- Vous pouvez également configurer un élément cloudantDatabase faisant référence à l'élément cloudant configuré à l'étape 4. Cette configuration permet à votre application d'injecter directement ou de rechercher un objet com.cloudant.client.api.Database. Cette configuration est bénéfique car
l'application n'a pas besoin de connaître le nom de la base de données car celui-ci est stocké dans la configuration du serveur. De plus, votre serveur Liberty gère le cycle de vie des
gestionnaires de connexion cloudant qu'il crée.
<cloudantDatabase jndiName="cloudant/mydb" databaseName="mydb" create="true" cloudantRef="myCloudant"/>
- Autorisez votre application à accéder à la ressource Cloudant de Database.
Injectez ou recherchez l'instance Database configurée à l'aide de l'élément de configuration cloudantDatabase à l'étape 5. Notez que lorsque vous injectez
une instance Database directement, l'application n'a pas besoin de connaître le nom de la base de données ni de gérer le cycle de vie du gestionnaire de connexion.
@Resource(lookup="cloudant/mydb")
com.cloudant.client.api.Database db;
- Autorisez votre application à utiliser les classes cloudant en configurant votre application de manière à faire référence à la bibliothèque Cloudant configurée à l'étape 3.
<application ...>
<classloader commonLibraryRef="cloudantLib"/>
</application>
Que faire ensuite
Après avoir configuré la connectivité Cloudant pour votre application, testez CouchDB à partir de votre application.