IDCFクラウドのCoreOSクラスタにCouchbase Server 3.0.1をインストールしました。Couchbase Serverのクラスタに接続するサンプルを書いてみます。ドキュメントサイトにあるJava SDK 2.0を使って、Hello Couchbase Exampleを実行してみます。CoreOSの仮装マシンの1台にJava開発環境のコンテナを用意して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.47","10.3.0.193","10.3.0.210");
の様に、引数へCouchbase Serverクラスタの3台のIPアドレスを指定します。
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を取得して追加します。
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"}}