在 Liberty 上运行的应用程序可以访问 NoSQL 数据库,例如 CouchDB。要访问 Liberty 中的 CouchDB 实例,首选方法是使用 Cloudant Java 客户机来配置连接器。
开始之前
Liberty 支持配置 Cloudant Java 客户机,但不提供所需的库。必须使用 Cloudant Java 客户机 V2.2.0 或更高版本。您可以从多种来源下载所需的库(例如 GitHub 或 Eclipse Maven 插件),以获取 Cloudant Java 客户机及其依赖项,如下所示:
<dependency>
<groupId>com.cloudant</groupId>
<artifactId>cloudant-client</artifactId>
<version>2.2.0</version>
</dependency>
关于此任务
要允许应用程序使用 Cloudant Java 客户机 API,您必须在
server.xml 文件中配置下列各项:
- 驱动程序的共享库以及该共享库依赖于的库
- 对该共享库的引用
然后,应用程序可直接访问客户机 API,而无需进行任何其他服务器配置工作。有关更多信息,请参阅
Cloudant 文档。ClientBuilder 可创建 CloudantClient 实例,然后,该实例可用于执行搜索、创建数据库视图以及完成其他任务。Database 允许应用程序执行创建、更新和修改操作。
要让应用程序插入 ClientBuilder 或 Database
实例,必须在服务器配置中启用 cloudant-1.0 功能部件并配置 Cloudant
资源。Liberty 运行时将管理它用于创建 Database 实例的 CloudantClient 实例的生命周期。
过程
- 在应用程序和 Liberty 运行时可访问的位置安装 Cloudant Java 客户机库及其依赖项。
例如,将 Cloudant 驱动程序文件及其依赖项放在 ${server.config.dir}/lib 目录中。
- 更新服务器配置,以使 ClientBuilder 或 Database 实例可通过资源查找或资源注入用于应用程序。
具体而言,可以通过在 server.xml 文件中将 cloudant-1.0 功能部件添加到功能部件管理器,使用 JNDI 更新服务器配置:
<featureManager>
<feature>cloudant-1.0</feature>
<feature>jndi-1.0</feature>
</featureManager>
切记: 仅当您使用 JNDI 来查找资源时,才需要 JNDI 功能部件。但是,当您使用资源注入时,不需要此功能部件。
- 在 Liberty 服务器的 server.xml 文件中,为 Cloudant 驱动程序文件配置共享库:
<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>
根据应用程序使用的 API 不同,可能需要额外的库。有关更多信息,请参阅
Cloudant Java 客户机文档。
- 配置对先前步骤中创建的共享库和缺省容器认证别名进行引用的 cloudant 元素。
您可以指定本地或远程数据库的 URL,或 Cloudant 数据库即服务 (DBaaS) 帐户。请记住不要同时指定这两者。
- 以下示例指定数据库的 URL:
<cloudant id="myCloudant" libraryRef="cloudantLib" url="http://example.com:5984" username="your_cloudant_username" password="your_cloudant_password"/>
- 以下示例指定帐户:
<cloudant id="myCloudant" libraryRef="cloudantLib" account="account_name" username="your_cloudant_username" password="your_cloudant_password" />
提示: 配置 JNDI 名称将使应用程序能够查找 ClientBuilder 实例。
- 您还可以配置对步骤 4 中所配置的 cloudant 元素进行引用的 cloudantDatabase 元素。 此配置使应用程序能够直接注入或查找 com.cloudant.client.api.Database
对象。这种设置的好处在于,应用程序不需要了解数据库名称,因为数据库名称存储在服务器配置中。另外,Liberty 服务器将管理它所创建的 cloudant 连接管理器的生命周期。
<cloudantDatabase jndiName="cloudant/mydb" databaseName="mydb" create="true" cloudantRef="myCloudant"/>
- 使应用程序能访问 Database Cloudant 数据库资源。
注入或查找步骤 5 中使用 cloudantDatabase 配置元素配置的 Database。请注意,直接注入 Database 时,应用程序不需要了解数据库名称或者管理连接管理器的生命周期。
@Resource(lookup="cloudant/mydb")
com.cloudant.client.api.Database db;
- 通过为应用程序配置对步骤 3 中配置的 Cloudant 库的引用,使应用程序能够使用 cloudant 类。
<application ...>
<classloader commonLibraryRef="cloudantLib"/>
</application>
下一步做什么
为应用程序配置 Cloudant 连接后,请从应用程序中测试 CouchDB。