3.クライアントライブラリを使っての開発
ここまではantを利用したテスト的な接続を行ってきましたが、実際にクライアントライブラリを利用してプログラムから「okuyama」に接続してみましょう。今回はJavaの専用クライアントを利用して接続を行います。
クライアントライブラリを利用する際のクラスファイルはclasses配下のokuyama/imdst/client/OkuyamaClient.classとokuyama/imdst/client/OkuyamaClientException.classの2つになります。開発時はokuyama.imdst.client.OkuyamaClientとokuyama.imdst.client.OkuyamaClientExceptionをimportしてください。
以降は利用時のソースコードになります。
01 | <!--//--><![CDATA[// ><!-- |
04 | import okuyama.imdst.client.OkuyamaClient; |
05 | import okuyama.imdst.client.OkuyamaClientException; |
08 | public static void main(String[] args) { |
10 | OkuyamaClient okuyamaClient = null; |
15 | okuyamaClient = new OkuyamaClient(); |
16 | okuyamaClient.connect("127.0.0.1", 8888); |
19 | boolean setResult = okuyamaClient.setValue("Key111", "Value111"); |
23 | System.out.println("setValue Result = [Success]"); |
26 | System.out.println("setValue Result = [Server Error]"); |
32 | String[] ret = okuyamaClient.getValue("Key111"); |
34 | if (ret[0].equals("true")) { |
37 | System.out.println("getValue Result = [" + ret[1] + "]"); |
38 | } else if (ret[0].equals("false")) { |
40 | System.out.println("getValue Result = [Not Found]"); |
41 | } else if (ret[0].equals("error")) { |
43 | System.out.println("getValue Result = [Server Errorr]"); |
49 | String[] tags = {"Tag1"}; |
50 | boolean setTagResult = okuyamaClient.setValue("Key111", tags, "Value111"); |
51 | setTagResult = okuyamaClient.setValue("Key222", tags, "Value222"); |
54 | Map tagValuesResult = okuyamaClient.getTagValues("Tag1"); |
55 | if (tagValuesResult != null) { |
57 | System.out.println(tagValuesResult); |
60 | System.out.println("getTagKeys Result = [Not Found]");] + "]"); |
63 | okuyamaClient.close(); |
64 | } catch(OkuyamaClientException oc) { |
それぞれ行っていることを行単位で説明します。
- 13行目:「okuyama」クライアントのインスタンス化を行います。
- 14行目:「okuyama」へ接続します。現在起動している「okuyama」のIPアドレスとポート番号を指定
- 17行目:「okuyama」へKeyとValueのペアを登録しています。
setValueメソッドは、登録結果をbooleanとして返します。
- 19行目:登録結果を判定。22行目は登録成功、24行目は登録失敗になります。
- 29行目:「okuyama」から値の取得を行います。先ほど登録したKey値"Key111"で取得しています。
getValueメソッドは結果を文字列の配列として返します。配列の添え字0番目が実行結果を表します。
- 31行目:取得結果を判定。34行目はデータあり。Valueをコンソールに出力しています。
37行目はデータなし、40行目はサーバー側でエラー発生です。
- 45行目:「okuyama」の特徴的な機能である、タグを登録しています。Tagは文字列の配列になります。
1つのデータにいくつでも付加できます。付加したいタグの準備は46行目で行っています。
47、48行目で"Key111"と新たに"Key222"にタグを付加しています。タグ付加はsetValueの引数が
(key, タグ, Value)の順番での呼び出しになります。
- 51行目:Tagを利用して紐付くKey値とValue値のペアを取得します。
getTagValuesメソッドは結果をKeyとValueのペアを格納したMap型として返します。
該当データが存在しない場合はnullになります。
- 54行目:取得結果のMapをコンソールに出力しています。
- 60行目:接続を切断しています。
このソースコードはMain.javaとして保存し、クラスパスにclassesディレクトリと、libディレクトリ配下のjavamail-1.4.1.jar(Base64変換のために使用)をクラスパスに通してコンパイルしてください。
※「okuyama」展開ディレクトリにて実行
#javac -classpath ./classes:./lib/javamail-1.4.1.jar Main.java
そして実行はMain.classの配置パスとコンパイル時に使用したクラスパスを通して実行します。
#java -classpath ./:./classes:./lib/javamail-1.4.1.jar Main
出力)
setValue Result = [Success]
getValue Result = [Value111]
{Key111=Value111, Key222=Value222}
4. では実際の運用ではどのような設定を行い利用するか
「okuyama」の起動から、基本となる操作、そして設定の変更、クライアントライブラリの利用方法までを体験いただけましたでしょうか。
設定の変更部分で行ったように「okuyama」は異なる特性のストレージを意図的には配置しクライアントは意識することなく利用することが可能です。そのため、「okuyama」を導入する際に適正な設定と配置が不可欠になります。
次回はこの点を踏まえて実際のアプリケーションではどのような設定で「okuyama」を運用しているかを事例と合わせて説明します。