在 Liberty 上运行的应用程序可以使用 CouchDB。要访问 CouchDB 实例,应用程序可以使用 Ektorp 客户机库为 NoSQL 数据库配置连接器。
开始之前
Liberty 提供对 CouchDB 的配置支持。CouchDB 是可缩放的高性能开放式源代码 NoSQL 数据库。
必须使用 Ektorp Java 驱动程序 V1.4.1 或更高版本。使用 Maven 插件以获取 Ektorp 驱动程序及其依赖性。
<dependency>
<groupId>org.ektorp</groupId>
<artifactId>org.ektorp</artifactId>
<version>1.4.1</version>
</dependency>
关于此任务
要允许应用程序使用 CouchDB,您必须为 CouchDB Java 驱动程序配置共享库,并在 server.xml 文件中配置对共享库的库引用。应用程序可以直接从应用程序或通过
server.xml 文件中的 couchdb-1.0 功能部件和 CouchDB 实例配置来访问 CouchDB。
过程
- 在应用程序和 Liberty 运行时可访问的位置安装 CouchDB Java 驱动程序。
例如,将 Ektorp 驱动程序文件及其依赖性放置在 Liberty_profile_root/usr/servers/server_name/lib 目录中。
- 在 server.xml 文件中为 Ektorp 驱动程序文件配置共享库。
<library id="couchdb-lib">
<fileset
dir='${server.config.dir}/lib'
includes='org.ektorp-1.4.1.jar
commons-codec-1.6.jar
commons-io-2.0.1.jar
commons-logging-1.1.1.jar
httpclient-4.2.5.jar
httpclient-cache-4.2.5.jar
httpcore-4.2.4.jar
jackson-annotations-2.2.2.jar
jackson-core-2.2.2.jar
jackson-databind-2.2.2.jar
slf4j-api-1.6.4.jar
slf4j-simple-1.6.4.jar'/>
</library>
- 使应用程序能够访问 CouchDB(从应用程序直接访问或者使用 couchdb-1.0 功能部件)。
- 允许从应用程序直接访问 CouchDB。
- 在 server.xml 文件的应用程序元素中配置共享库的库引用。
<application ...>
<classloader commonLibraryRef="couchdb-lib"/>
</application>
现在,应用程序可以直接访问 CouchDB API。如果您希望应用程序使用运行时注入引擎,请继续执行后续步骤。
- 在 server.xml 文件中配置 couchdb-1.0 功能部件及 couchdb 元素。
- 将 couchdb-1.0 功能部件添加至 server.xml 文件。
<featureManager>
<feature>couchdb-1.0</feature>
<feature>jndi-1.0</feature>
</featureManager>
仅当您使用 JNDI 来查找资源时,才需要 JNDI 功能部件。如果您使用资源注入,那么不需要此功能部件。
- 配置具有对上一步骤中所创建共享库的引用的 couchdb 元素。
<couchdb id="couchdb" jndiName="couchdb/connector"
libraryRef="couchdb-lib" url="http://example.com:5984" username="username"
password="password"/>
配置 JNDI 名称将使应用程序或 Liberty 运行时能够查找 CouchDB 实例。
- 允许应用程序访问 CouchDB。
以下示例说明了 JNDI 查找和资源注入:
public class TestServlet extends HttpServlet {
@Resource(name = "couchdb/connector")
protected CouchDbInstance db;
...
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// Alternatively use InitialContext lookup
CouchDbInstance lookup = (CouchDbInstance) new
InitialContext().lookup("java:comp/env/couchdb/connector");
...
- 如果您正在使用 JNDI 查找功能,请将资源环境引用添加到应用程序的 web.xml 文件:
<resource-env-ref> <resource-env-ref-name>couchdb/connector</resource-env-ref-name>
<resource-env-ref-type>org.ektorp.CouchDbInstance</resource-env-ref-type>
</resource-env-ref>
可使用
couchdb-1.0 功能部署配置与在线 Cloudant® 服务的连接。在
couchdb 配置元素中指定现有 Cloudant 帐户的 URL、用户标识和密码。例如:
<couchdb id='couchdb' jndiName='couchdb/connector' libraryRef='couchdb-lib' url='https://mylink.cloudant.com/' username='myusername' password='mypassword'/>
请参阅
Liberty:通过密码加密进行保护时存在的限制 的文档以了解如何保护配置文件中的密码。
下一步做什么
现在,应用程序已配置为使用 CouchDB,您已准备好测试从应用程序中使用 CouchDB。