今日の役に立たない一言 - Today’s Trifle! -

古い記事ではさまざまなテーマを書いていますが、2007年以降はプログラミング関連の話がほとんどです。

自宅サーバ構築 - Roller編(2)

仕事もあるけど、こっちも気になるので少しだけ触ってみた。
動かない原因となってるらしき情報が、Roller のエラー画面に出てる。

ERROR: cannot locate JNDI DataSource [java:comp/env/jdbc/rollerdb]. Likely problem: no DataSource or datasource is misconfigured.

要するに、設定間違いらしい。言われたとおりに設定してるはずなのに、何が気に入らないんだか。。。
初心にかえって、JNDI で DB と接続するサンプルアプリケーション Inventory を、Geronimo のドキュメントに書かれている方法で動かしてみると、あっさりと動いてくれた。
9.b. データベース接続の簡単なサンプル・アプリケーション
Inventory との違ってる箇所をチェックすればなんとかなるんじゃないかと期待しつつ。
Geronimo Console の [Database Pools] を参照すると、Inventory の DB は、InventoryPool として見えてる。Roller のを登録しなくちゃいかんのだろうと予測して、[Using the Geronimo database pool wizard]をクリックして RollerPool を作成してみる。

Name of Database Pool: RollerPool
Database Type: MySQL を選択する

[Next]をクリックすると、詳細な設定画面に移動。
入力or選択したのは以下の部分だけ。Port Number は最初から 3306 と記載されているので、これはそのままにしておく。

Driver JAR: MySQL のを選ぶ
User Name: (roller-custom.properties の database.jdbc.username の値)
Server Name: 127.0.0.1
Database Name: rollerdb
Password: (roller-custom.properties の database.jdbc.password の値)

これだけ入力したら、[Deploy]をクリック。
最初、Driver Jar: に MySQL のドライバが表示されてなかったので、ドライバをダウンロードしてきて $(GERONIMO)/repository/mysql/ 以下の適当なところに Jar ファイルをコピーしたら表示されるようになった。
ここまでやれば JNDI で MySQL につながるんじゃないかと思って、http://host:8080/roller/ にアクセスしてみたら、同じエラーが表示された。orz
次は設定ファイルのチェック。$(GERONIMO)/deploy/roller/WEB-INF/classes/ にある web.xmlgeronimo-web.xml を Inventory のと比較してみる。すると、web.xml の一番最後の部分のコメントアウトしたところが、Inventory の web.xml だと生きている。その部分のコメントアウトをはずしてやる。で、geronimo を再起動。でも状況は変わらず。$GERONIMO/var/catalina/logs/roller.log とか見てると、なんか $GERONIMO/deploy/roller/ から起動してるわけじゃなくて、それを $GERONIMO/repository/default/Roller/ の下にコピーしてから起動してるっぽい。$GERONIMO/repository/default/Roller をディレクトリごと削除して geronimo を再起動したら、geronimo がエラーを出してくれた。そこを参照してるっぽいファイルを探すと、$GERONIMO/var/config/config.xml の最後に書いてあった。以下の部分を削除。

    

geronimo を再起動すると、今度は geronimo を起動した延長で roller がエラーを出して起動しないようになった。。。orz
$GERONIMO/var/catalina/logs/roller.log を見ると、

INFO  2008-06-12 16:39:38,927 GeronimoLog:info - SUCCESS: Got parameters. Using configuration type JNDI_NAME
INFO  2008-06-12 16:39:38,931 GeronimoLog:info - -- Using JNDI datasource name: java:comp/env/jdbc/rollerdb
INFO  2008-06-12 16:39:38,945 GeronimoLog:info - SUCCESS: located JNDI DataSource [java:comp/env/jdbc/rollerdb]
ERROR 2008-06-12 16:39:39,060 StandardContext:listenerStart - Exception sending context initialized event to listener instance of class org.apache.roller.weblogger.ui.core.RollerContext
java.lang.RuntimeException: Error checking for tables

JNDI で jdbc/rollerdb は見えるようになったらしい。
一歩進んだみたいだけど、roller が起動しなくなったのでなんとなく後戻りした気分。
(続く)