0%

Couchbase on Docker - Part2: Java SDK 2.0 とGradleでサンプル作成

IDCFクラウドのCoreOSクラスタにCouchbase Server 3.0.1をインストールしました。Couchbase Serverのクラスタに接続するサンプルを書いてみます。ドキュメントサイトにあるJava SDK 2.0を使って、Hello Couchbase Exampleを実行してみます。CoreOSの仮装マシンの1台に、Docker Hub Registryからmasato/baseimageをpullしてGradleでプロジェクトを作成します。

Java開発環境

dockerfile/javaをpullして使い捨てのコンテナを作ります。$JAVA_HOMEを確認します。

$ docker run -it --rm dockerfile/java:oracle-java8
$ echo $JAVA_HOME
/usr/lib/jvm/java-8-oracle
$ java -version
java version "1.8.0_25"
Java(TM) SE Runtime Environment (build 1.8.0_25-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)

サンプルプロジェクト

作成したサンプルプロジェクトはsimple-couchbaseのリポジトリにあります。git cloneしたあとgradlewを実行すればGradleの実行環境ができあがります。

$ git clone https://github.com/masato/simple-couchbase.git
$ cd simple-couchbase
$ ./gradlew

CouchMain.java

Couchbase Serverに接続するアプリのMainクラスです。CouchbaseCluster.create("10.3.0.193","10.3.0.7","10.3.0.210");の様に、引数へCouchbase Serverクラスタの3台のIPアドレスを指定します。

~/simple-couchbase/src/main/java/example/CouchMain.java
package example;
import com.couchbase.client.java.Cluster;
import com.couchbase.client.java.CouchbaseCluster;
import com.couchbase.client.java.Bucket;
import com.couchbase.client.java.document.json.JsonObject;
import com.couchbase.client.java.document.Document;
import com.couchbase.client.java.document.JsonDocument;
public class CouchMain
{
public static void main(String args[])
{
try {
Cluster cluster = CouchbaseCluster.create("10.3.0.193","10.3.0.7","10.3.0.210");
Bucket bucket = cluster.openBucket();
JsonObject user = JsonObject.empty()
.put("firstname", "Walter")
.put("lastname", "White")
.put("job", "chemistry teacher")
.put("age", 50);
JsonDocument doc = JsonDocument.create("walter", user);
JsonDocument response = bucket.upsert(doc);
JsonDocument walter = bucket.get("walter");
System.out.println("Found: " + walter);
cluster.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
}
}

build.gradle

build.gradleにはapply plugin: 'application'mainClassName = 'example.CouchMain'を記述して、runタスクからMainクラスを実行できるようにします。dependenciesにはMavenからjava-client:2.0.2を取得して追加します。

~/simple-couchbase/build.gradle
apply plugin: 'java'
apply plugin: 'application'

mainClassName = 'example.CouchMain'

repositories {
mavenCentral()
}

sourceCompatibility = 1.8
targetCompatibility = 1.8

dependencies {
compile 'com.couchbase.client:java-client:2.0.2'
}

./gradlew run

Couchbase ServerにupsertしたJSONをgetして中身を確認することができました。

$ cd ~/simple-couchbase
$ ./gradlew clean run
...
Found: JsonDocument{id='walter', cas=255239600078706, expiry=0, content={"firstname":"Walter","job":"chemistry teacher","age":50,"lastname":"White"}}