2009年10月14日水曜日

JSF2.0 追試

JSF 2 を試したくて、developerworks に載ってる記事を追試してみた。

サンプルコードをdownload して、readme.txtを読んでやってみたが、動かすまでに一苦労あったので、動かすまでの手順などを書いておく。

■ javac でビルドしようとして失敗

サンプルコードをダウンロードすると Readme.txt があって動かす手順があるが、さっぱり動かない。動かす以前に、JavaファイルとGroovyファイルがあり、互いのクラスファイルを参照していたりして、そもそもビルドの仕方がよく分からない。

Groovyファイルのコンパイルってどうするんだっけ?
何やら ant タスクもあるらしいが、記事中でEclipse プラグインについて言及があったので、それを使うことにした。となるとGroovyのコンパイルだけ Eclipse というのも変だし、いっそ Eclipse ベースでやってみる事にした。

■ Eclipse ベースに移行
と言うわけで Dynamic Web Project を作成(すでにGroovyプラグインが入っている前提)。これだけではGroovyファイルがコンパイルできないので、プロジェクトのコンテキストメニューから Configure>Convert to Groovy Project を選択。Groovy nature が追加されてプロジェクトのアイコンがちょっと変わる。output フォルダはWEB-INFしたのclassesを指定しておく。あとビルドパスの設定で、Server Runtime>Apache Tomcat 6.0を追加する。


■ 必要ファイルをプロジェクトに追加

サンプルコードの必要ファイルを、Eclipse上のプロジェクトに以下のようにコピー。
  • places下のフォルダdecorators, pages, resources, sections, templatesとindex.htmlを
    WebContent 下にコピー
  • WEB-INF直下の3つのxmlを WEB-INF直下にコピー
  • src 以下のファイルをsrc下にコピー


続いて以下の jarをネットで漁るなどして集めて、WEB-INF/lib 下にコピー。
  • asm-all-2.2.jar
  • commons-beanutils-1.8.0.jar
  • commons-codec-1.3.jar
  • commons-fileupload-1.1.1.jar
  • commons-httpclient-3.1-alpha1.jar
  • commons-io-1.2.jar
  • groovy-1.6.5.jar
  • gwt-servlet.jar
  • hibernate3.jar
  • jsf-api.jar (mojarra-2.0.0-RC-binary)
  • jsf-impl.jar (同上)
  • jstl-1.1.0.jar
  • mysql-connector-java-3.1.13-bin.jar
(サンプルコードのreadmeで指定されているjarと若干違うが、Tomcat のバージョンでも違ったりするのか、そのままだと動かなかった(ClassNotFountException等)ので、試行錯誤して動く組合せをみつけた。)

■ 動かしてみる
http://localhost:8080/places/にアクセスするとユーザ名とパスワードを聞いてくる。なんのユーザ名かわからなかったが、ソースを見るとユーザ名:William, パスワードjsfで固定らしい。それを入力するとログイン成功。

「Go」ボタンを押すと地図が表示される。最初は例外が出るばかりで困ったが、スタックとレースを見ながら上述のようにjar の組合せを変えるとだんだん動くようになった。まだ何やら怪しい動きが多いが、ここまでくるとデバッガやログでいろいろ調べられる。徐々に改造してみようと思う。

■ とりあえずの雑感
  • Eclipse で Groovy と java が同じプロジェクトで同じようにコンパイルできて、ぜんぜん区別なく使えるのは初めて知った。Java プロジェクトに導入する敷居はかなり低いはず。特にEDSLに使えそう。上級プログラマが EDSL を開発して、若干スキルの低いプログラマが業務仕様をEDSL を用いて実装するような形で効果がありそう。
  • 最初の JSFはいまいち盛り上がらなかったけど、JSF2はどうなんだろうなあ。Struts 2とどっちがいいだろう。有用性とか生産性が同程度なら当然 JSF だけど、そのためにもやっぱり正式リリースをさっさと済ましてほしい。

0 件のコメント:

コメントを投稿