Liberty 中使用 Ektorp 客户机库来配置 CouchDB 连接

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。

过程

  1. 在应用程序和 Liberty 运行时可访问的位置安装 CouchDB Java 驱动程序。

    例如,将 Ektorp 驱动程序文件及其依赖性放置在 Liberty_profile_root/usr/servers/server_name/lib 目录中。

  2. 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>
  3. 使应用程序能够访问 CouchDB(从应用程序直接访问或者使用 couchdb-1.0 功能部件)。
    • 允许从应用程序直接访问 CouchDB。
      1. server.xml 文件的应用程序元素中配置共享库的库引用。
        <application ...>
           <classloader commonLibraryRef="couchdb-lib"/>
        	</application>
        现在,应用程序可以直接访问 CouchDB API。如果您希望应用程序使用运行时注入引擎,请继续执行后续步骤。
    • server.xml 文件中配置 couchdb-1.0 功能部件及 couchdb 元素。
      1. couchdb-1.0 功能部件添加至 server.xml 文件。
        <featureManager>
           <feature>couchdb-1.0</feature>
           <feature>jndi-1.0</feature>
        </featureManager>
        仅当您使用 JNDI 来查找资源时,才需要 JNDI 功能部件。如果您使用资源注入,那么不需要此功能部件。
      2. 配置具有对上一步骤中所创建共享库的引用的 couchdb 元素。
        <couchdb id="couchdb" jndiName="couchdb/connector"
              libraryRef="couchdb-lib" url="http://example.com:5984" username="username"
              password="password"/>

        配置 JNDI 名称将使应用程序或 Liberty 运行时能够查找 CouchDB 实例。

      3. 允许应用程序访问 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");
        ...
      4. 如果您正在使用 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。


用于指示主题类型的图标 任务主题

文件名:twlp_couchdb_create.html