CassandraをEclipseからデバッグ実行する
これからCassandraをいじり倒すぞー!!
というわけで、何はともあれソースが追っかけられる状態にしようと思って、Eclipseからデバッグ実行できる環境を作ってみた。以下、その手順です。
あ、環境はMac OS X Snow Leopardですんで、それ以外の環境の方はいろいろ置き換えて下さい。Cassandraはgitから取得できる最新の0.7を想定。
2010.06.13 追記
antを実行する必要があったみたい。自分がやったとき必要だったかな?antの実行を追記しました。
あとここではgitからチェックアウトしてますが、svnの方が最新の状態がチェックアウトできるので、svnを利用した方がいいかもです。
Eclipse準備
普通にインストールしておきます。ここではEclipse 3.5を利用。
CassandraのWeb版の管理ツール(Cassandra Web Console)がすごいオススメなので、これを利用するためにTomcatも入れてサーバーに登録しておきましょ。
cassandraプロジェクトを作成
cassandraという名前のJavaプロジェクトを作っておきます。
gitからチェックアウト
以下のコマンドでgitからソースをチェックアウト。workspaceの下だと、上記で作成したプロジェクト名とかぶるのでそこ以外で。
git clone git://git.apache.org/cassandra.git
ソースの配置
gitでチェックアウトしたソースを、上記で作成したcassandraプロジェクト配下にコピー。
cp -R cassandra/* workspace/cassandra/
ソース・フォルダの整理とライブラリの読み込み
まずはsrcフォルダをソース・フォルダから削除。実際のソースはいくつかのディレクトリに点在しているので、それぞれソース・フォルダとして登録します。登録するソース・フォルダは以下の通り。
最後に以下のディレクトリ配下のjarファイルをすべてライブラリとして登録。
- lib
2010.06.13 追記
あとbuild/lib/jars/junit-4.6.jarも登録する必要がありました。
これでコンパイルエラーがすべて消えるはず。
起動設定
環境に合わせて以下の箇所を修正。
- cassandra.yaml
- commitlog_directory
- data_file_directories
- log4j-server.properties
- log4j.appender.R.File
あとはJavaアプリケーションの実行でメインクラスに
org.apache.cassandra.thrift.CassandraDaemon
を指定、プログラム引数に
-Dcassandra -Dcassandra-foreground=yes
を指定して、最後にVM引数にcassandra.in.shを参考にパラメータを渡すだけ。
-ea -Xms128m -Xmx1G -XX:TargetSurvivorRatio=90 -XX:+AggressiveOpts -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+HeapDumpOnOutOfMemoryError -XX:SurvivorRatio=128 -XX:MaxTenuringThreshold=0 -Dcom.sun.management.jmxremote.port=9081 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
ここのポイントは、jmxのポート指定を8080から別に変えること。Tomcatのポートとかぶるので。
これで実行してみて起動できれば完了です!