Liberty での Cloudant Java クライアント・ライブラリーを使用した CouchDB 接続の構成

Liberty で実行されるアプリケーションは、CouchDB などの NoSQL データベースにアクセスできます。Liberty での CouchDB インスタンスへのアクセス方法として推奨されるのは、Cloudant Java クライアントを使用してコネクターを構成することです。

始める前に

Liberty では、Cloudant Java クライアントの構成はサポートしていますが、必要なライブラリーを提供していません。 必ず、バージョン 2.2.0 以降の Cloudant Java クライアントを使用してください。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 の資料を参照してください。ClientBuilderCloudantClient インスタンスを作成でき、それらを使用すれば、データベース・ビューの検索や作成、および他のタスクを実行できます。Database は、アプリケーションが、作成、更新、および変更の操作を実行することを許可します。

アプリケーションが ClientBuilder インスタンスまたは Database インスタンスを注入できるようにするには、 サーバー構成内で、cloudant-1.0 フィーチャーを有効にし、Cloudant リソースを構成する必要があります。Liberty ランタイムは、 Database インスタンスを作成するために使用する CloudantClient インスタンスのライフサイクルを管理します。

手順

  1. アプリケーションおよび Liberty ランタイムがアクセスできる場所に、Cloudant Java クライアント・ライブラリーおよびその依存関係をインストールします。

    例えば、Cloudant ドライバー・ファイルとその依存関係を ${server.config.dir}/lib ディレクトリーに配置します。

  2. サーバー構成を更新して、リソース検索またはリソース・インジェクションを使用することによって ClientBuilder インスタンスまたは Database インスタンスをアプリケーションで使用可能にします。

    具体的には、JNDI を使用して、server.xml ファイル内で cloudant-1.0 フィーチャーをフィーチャー・マネージャーに追加することによって、サーバー構成を更新できます。

    <featureManager>
        <feature>cloudant-1.0</feature>
        <feature>jndi-1.0</feature>
    </featureManager>
    要確認: JNDI フィーチャーは、リソースの検索に JNDI を使用する場合にのみ必要です。 ただし、リソース・インジェクションを使用する場合、このフィーチャーは必須ではありません。
  3. 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 クライアントの資料を参照してください。

  4. これまでのステップで作成した共有ライブラリーおよびデフォルト・コンテナー認証別名を参照する cloudant エレメントを構成します。
    ローカル・データベースまたはリモート・データベースの URL を指定することも、Cloudant の Database as a Service (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 インスタンスを検索できるようになります。
  5. ステップ 4 で構成した cloudant エレメントを参照する cloudantDatabase エレメントを構成することもできます。 この構成によって、アプリケーションは com.cloudant.client.api.Database オブジェクトを直接注入または検索できるようになります。このセットアップが有益なのは、データベース名がサーバー構成に保管されるため、アプリケーションがデータベースの名前を認識する必要がないからです。さらに、Liberty サーバーが作成する cloudant 接続マネージャーのライフサイクルは Liberty サーバーが管理します。
    <cloudantDatabase jndiName="cloudant/mydb" databaseName="mydb" create="true" cloudantRef="myCloudant"/>
  6. アプリケーションが Database Cloudant リソースにアクセスできるようにします。

    ステップ 5 で cloudantDatabase 構成エレメントを使用して構成された Database を注入または検索します。 Database を直接注入する場合、アプリケーションがデータベースの名前を認識する必要はなく、接続マネージャーのライフサイクルを管理する必要もないことに注意してください。

    @Resource(lookup="cloudant/mydb")
    com.cloudant.client.api.Database db;
  7. ステップ 3 で構成した Cloudant ライブラリーへの参照を使用してアプリケーションを構成して、アプリケーションが cloudant クラスを使用できるようにします。
    <application ...>
        <classloader commonLibraryRef="cloudantLib"/>
    </application>

次のタスク

アプリケーション用に Cloudant 接続を構成した後、アプリケーションから CouchDB をテストします。


トピックのタイプを示すアイコン タスク・トピック

ファイル名: twlp_couchdb_config.html