« 読書日記『と言うか読書メモ』 | トップページ | 読書&実体験『開発者ノートシリーズ「Maven」(第1章)』 »

2007年4月 2日 (月曜日)

ゴミにのしをつける読書日記「Tomcat実践アプリケーションサーバ構築」

今回取り上げるのはコレ。かなーり古い本。

「ゴミにのしをつけてやるな」と語ったのは「コンサルタントの道具箱」ですが、意外と「ゴミにのしをつけるような行為」が止められない性分だったりしてまして、またやってしまいました。

カテゴリもミックスされてますがご容赦を。つーかAmazonにある「コンサルタントの道具箱」って手持ちのヤツと表紙が違うと思いきや新装版ですか・・・

この本、出版されてから半年後の2002年5月に買ってしばらく放置しておいていて、翌年の社内の新人研修で使おうと思い、試してみるがMySQL、Tomcat、JDK周りが激変しているのに面食らって断念。その後放置していたんですが、ふと思い立ってこの週末に動かしてみました。
(当時動かないまでもMySQLやらTomcatやらJNDI、JDBC関連のファイルは保存していて、それが役にたったと言うか、バカに拍車をかけたと言うか・・・まぁなんとでも言ってください)

んで、試行錯誤する事約5時間ほど。無事に動かす事ができ、5年越しの思いが叶いました。「自分の未熟さ」+「1年で激変した開発環境事情」+「不親切な文章」でここまでハマるもんなのかとしみじみと感じました。「識者が書くテキストに要注意」と言うテーマでコラムを近々アップしたいと思いますがまさにそのパターン。

一応、サンプル動作のポイントをまとめてみる
(いや、今時この本でTomcat学ぶ人なんていないんですが・・・)

「MySQLのバージョン」
3.2.3でないとNG。4.xとか5.xでも頑張れば動くと思うがConnector関連がJDK1.4依存になったりするのでJDK1.3で頑張りたいんならこれにすべし。

「MySQLConnectorのバージョン」
本書で取り上げるバージョン以外はパッケージ構成に注意。
ちなみに私が使ったmysql-connector-java-2.0.14を使用する場合は.bindingsで指定されているデータソースクラスとファクトリークラスを以下の様に変更する(クラス名が同じだがパッケージを移動した模様)

#変更前
#jdbc/album/FactoryName=org.gjt.mm.mysql.MysqlDataSourceFactory
#jdbc/album/ClassName=org.gjt.mm.mysql.MysqlDataSource
#変更後
jdbc/album/FactoryName=com.mysql.jdbc.jdbc2.optional.MysqlDataSourceFactory
jdbc/album/ClassName=com.mysql.jdbc.jdbc2.optional.MysqlDataSource

また、jdbc2_0-stdext.jarの入手先に戸惑うが上記Connectorのlibフォルダにあるのでそれを使用。Connector/Jの3.x系はJDK1.4に依存していたりでうまく行かない。

「tomcat.batの編集」
本書では

set TOMCAT_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n
 -Djava.naming.factory.initial=com.sun.jndi.fscontext.RefFSContextFactory
 -Djava.naming.provider.url=file://c:/tomcat-3.2.3/webapps/album

を追加しろとあるが-の前のスペースがついていない。そのまま鵜呑みはNG。
(それすらわからなかった数年前の自分にも腹が立つ。Tomcatが起動しなくなるのですぐ分かるはずなんだが・・・)

「tomcat-users.xmlの編集」
ログイン:admin
パスワード:admin
ロール:album_admin
のユーザを追加

「マスタ管理ログイン」はこのユーザでログインする。DB上のデータ(ユーザ名:SUZUKI パスワード:ICHIRO)は「アルバム管理サーバへログイン」に使用する。(当時、「マスタ管理ログイン」に一生懸命DB上のデータを入力して蹴られていた模様・・・。と言うかtomcat-users.xmlに追加しろとはどこにも書いていない)

ここまででとりあえず画面は動く。しかしユーザ登録、カテゴリ登録、画像登録しようとしてマルチバイト文字を使うと化ける。まず、MySQL自体のエンコーディング設定がデフォルトで8859_1(Latin1)になっているのでc:\winnt\my.iniに以下の行を追加して文字コードを指定する(実際はWindowsServer2003上で作業したのでC:\WINDOWSでしたが)。

[mysqld]
default-character-set=sjis
[mysql]
default-character-set=sjis 

さらに.bindingsでのJDBC接続文字列にSJISを指定
#変更前
album/RefAddr/4/Type=album
#変更後
album/RefAddr/4/Type=album?useUnicode=true&characterEncoding=SJIS

これで完璧!と思いつつ、今度は画像のアップロードでSQLエラー
(サンプルは画像管理のアプリケーション)

バイナリデータがsjisエンコードだとNGらしく、結果的にmy.iniの設定を外して一通り機能が動作するようになった(ただし「2バイト目に0x5C」問題には対応されておらず、「能」などを入力するとNGとなる)

繰り返しですが、今時この本でTomcat学ぶ人なんて多分いないんですがまぁ、ネタと言うことで。

|

« 読書日記『と言うか読書メモ』 | トップページ | 読書&実体験『開発者ノートシリーズ「Maven」(第1章)』 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/2790/14501179

この記事へのトラックバック一覧です: ゴミにのしをつける読書日記「Tomcat実践アプリケーションサーバ構築」:

« 読書日記『と言うか読書メモ』 | トップページ | 読書&実体験『開発者ノートシリーズ「Maven」(第1章)』 »