シグネチャを調べる

JNI を扱うとき、メソッドのシグネチャを指定しなければならないが、簡単にコマンドで調べられることがわかった。これで、一括で抜き出したい時などに楽ができそう。 $ javap -s Person Compiled from "Person.java" public class Person extends java.lang.Object{ public Person(); Signature: ()V public void SetAge(int); Signature: (I)V public int GetAge(); Signature: ()I public void SetName(java.lang.String); Signature: (Ljava/lang/String;)V public java.lang.String GetName(); Signature: ()Ljava/lang/String; public static void main(java.lang.String[]); Signature: ([Ljava/lang/String;)V }

Read More

メソッドの引数に変数を渡す - JNI サンプル

Java のクラスメソッドに、変数を渡すサンプルを書いてみた。 int, String, String[] の 3 つ。 基本的には、Java に渡すために変数を変換してあげるくらいで、それ程手間ではないかな。動くからって今のコードが正しいと言えないものなので、いくつか確認は必要かな。 あと、エラー処理が足りない。 int の場合 http://qtakamitsu-snippet.googlecode.com/svn/trunk/lang/c/jni/args_int/ String の場合 http://qtakamitsu-snippet.googlecode.com/svn/trunk/lang/c/jni/args_string/ String[] の場合 http://qtakamitsu-snippet.googlecode.com/svn/trunk/lang/c/jni/args_string_array/

Read More

HBase にテストデータを登録する

HBase のスタンドアローンでローカルにインストールしたので、テストデータを登録してみる。 実行結果 create 'test', 'cf' put 'test', 'row1', 'cf:a', 'value1' put 'test', 'row2', 'cf:b', 'value2' put 'test', 'row3', 'cf:c', 'value3' $ hbase shell HBase Shell; enter 'help<RETURN>' for list of supported commands. Type "exit<RETURN>" to leave the HBase Shell Version 0.90.3, r1100350, Sat May 7 13:31:12 PDT 2011 hbase(main):001:0> create 'test', 'cf' 0 row(s) in 1.7890 seconds hbase(main):002:0> put 'test', 'row1', 'cf:a', 'value1' 0 row(s) in 0.1660 seconds hbase(main):003:0> put 'test', 'row2', 'cf:b', 'value2' 0 row(s) in 0.

Read More

HBase をインストール (stand-alone, HBase only)

Cent OS 5.5 (32bit) に HBase 0.90.3 を入れてみる。 0.20 のときは、起動する際にパスワードを聞かれていた気がするけれど、聞かれなくなっていた。 0. 準備 HBase は 1.6 以降の Java が必要なため、インストールしておく。 実行するユーザーに環境変数 JAVA_HOME を設定する。 export JAVA_HOME=/opt/java/jdk1.6.0_22 1. HBase パッケージをダウンロードする [[HBase - HBase Home|http://hbase.apache.org/]] から、パッケージをダウンロードする。 2. インストール環境を構築する インストールしたい場所に、hbase-0.90.3.tar.gz を置き、ファイルを展開する。 $ tar zxf hbase-0.90.3.tar.gz $ cd hbase-0.90.3 /home/hbase/opt/hbase-0.90.3/data にデータを保存するようにする。 $ vim conf/hbase-site.xml <configuration> <property> <name>hbase.rootdir</name> <value>file:///home/hbase/opt/hbase-0.90.3/data</value> </property> </configuration> 3. 起動してみる [HBaseインストール先]/bin/start-hbase.sh にあるファイルを実行する。 <<< $ ./bin/start-hbase.sh starting master, logging to /home/hbase/opt/hbase-0.90.3/bin/../logs/hbase-hbase-master-centos5.5.out >>>

Read More

クラスメソッドを呼ぶ - JNI サンプル

Java で定義したクラスメソッドを C から、呼んでみる。 Java のソースコード $ cat ClassMethodSample.java public class ClassMethodSample { public static void main (String[] args) { System.out.println("main"); } public static void SayHello() { System.out.println("Java> Hello world."); } } C 言語のソースコード #include <stdio.h> #include <stdlib.h> #include <string.h> #include "jni.h" int main(int argc, char **argv) { JNIEnv *jenv; JavaVM *jvm; JavaVMInitArgs jvm_args; JavaVMOption jvm_options[1]; jclass klass; jmethodID mid; int ret; jvm_options[0].optionString = "-Djava.class.path=./java"; jvm_args.version = JNI_VERSION_1_6; jvm_args.

Read More