Apache Derby をいじる

<< 戻る   トップ >>

今朝の 3:10 にバックアップが動いて、例によってカウンタがクラッシュ。これはちゃっちゃと Apache Derby 使ってカウンタプログラム書いちゃえ、というご託宣だな。そんなわけで鴨乃嘴南蛮システムにおける MySQL 代替 RDBMS 候補、Apache Derby の演習を進める。

Derby の特徴の一つが組み込みモードを持つことだ。Getting Stated with Derbyの "Self-study tutorial for users new to Derby" の演習1 はこの組み込みモードの扱っている。

演習2 をはじめた途端、「エラー: メイン・クラス org.apache.derby.drda.NetworkServerControl が見つからなかったかロードできませんでした」と言ってきた。org.apache.derby.drda.NetworkServerControl クラスは /usr/share/java/derby/derbynet.jar に収められているはず。パスが通ってないんじゃないかとしばしのたうちまわった挙句、jar の中身を開けてみてビックリ。入っていないのだ。しかたがないのでオリジナルの dervy 10.6.2.1 から derbynet.jar をコピーして動かしている。

演習2 によると、「クライアント/サーバ構成では、複数のクライアントプログラムがネットワークサーバに接続することができ、同時にデータベースにアクセスすることができる」とある。ならば組み込み構成 (embeded configuration) ではそれができないのか。試みに二つの derby-ij から同じデータベースにアクセスしてみる。すると、第二のクライアントからは次のようなエラーメッセージが返ってきて接続できない。

ij> connect 'jdbc:derby:firstdb';
エラー XJ040: クラスローダー sun.misc.Launcher$AppClassLoader@da4a1c9 を使用してデータベース 'firstdb' を始動できません。詳しくは、次の例外を参照してください。
エラー XSDB6: Derby の別のインスタンスがすでにデータベース /home/yosimuta/DerbyTutor/firstdb をブートしている可能性があります。

「同時に」「複数の」クライアントプログラムからのアクセスがある場合は、組み込み構成は使えないのだ。

"Self-study tutorial for users new to Derby" 中のコマンドなどの記述で、Fedora 17 で改変されている部分は次のとおり。

Activity 1 (p.23)ij/usr/bin/derby-ijij ツール
Activity 2 (p.25)java -jar PATH/derbyrun.jar server start/usr/bin/derby-startNetworkServerDerby ネットワークサーバの起動
Activity 2 (p.27)java -jar PATH/derbyrun.jar server shutdown/usr/bin/derby-stopNetworkServerDerby ネットワークサーバの停止

作成: 2012-09-06 11:04:28.0更新: 2012-09-06 11:04:28.0
http://museo-anonimo.jp/nanban/?id=1126,http://museo-anonimo.jp/nanban/tr/1126