JSF2.0+JPA2.0+eclipse 構築編:eclipseプロジェクトの作成

JSF2.0+JPA2.0をeclipseで開発する環境の構築に挑戦してみます。

glassfish-embeddedを利用

プロジェクトで完結した環境を作るためにglassfish-embeddedを利用します。
GlassfishオープンソースJavaEEコンテナで、Glassfish3.0.XはJavaEE6の仕様を実装しています。

Glassfishを利用する場合、普通はサーバプロセスを起動し、管理コンソールなどからWebアプリを配備して使用します。この方法で開発する場合、eclipseにサーバアダプタを導入する必要があるのですが・・・
これが 実にうまくいかない

私の環境(eclipse-helios)ではそもそもサーバアダプタにGlassfishの項が出てこないし、ganymedeを使っていた頃もやたら苦労した覚えがあります。

なのでglassfish-embeddedを利用します。
これはたった1つのJARファイルにフルスペックのGlassfishの機能が詰め込まれているもので、APIを使ったクラスを作り起動することで、直接Webアプリケーションを起動することが出来ます。

glassfish-embeddedのダウンロード

http://download.java.net/maven/glassfish/org/glassfish/extras/glassfish-embedded-all/3.0.1/
から
glassfish-embedded-all-3.0.1.jar
をダウンロードします。

eclipseプロジェクトを作成

Javaプロジェクトを作成します。
ここでは"sandbox-glassfish-embedded"という名前にします。

Default output folder(クラスファイルの出力先)はWARファイルの構成の体を成すように変えておきます。

ついでに、テストクラスなどを作ることを考慮してソースフォルダも変えておきます。

元からあるソースフォルダであるbinは消しておきました。

最終的にはこんな設定になりました。

JAR参照の追加

ダウンロードしたglassfish-embedded-all-3.0.1.jarをプロジェクトにコピーし、それを参照します。
プロジェクトにコピーするのがポイントです。私は普段はmavenを使っているのでJARをプロジェクトにコピーすることはしませんが、今回は依存する物を減らすためにこうします。
ここではserver-libというフォルダを作ってその中に置くことにしました。

この配置場所を見て「WEB-INF/libじゃないの?」と思われるかもしれませんし実際私も一瞬迷ったんですが、glassfish-embeddedは本来JavaEEコンテナが提供する機能でありWEB-INF/libに置くのはふさわしくないと判断しました。
さてこのJARにビルドパスを通しておきましょう。

余談ですがなんでeclipseはJAR参照を「クラスパス」と言わずに「ビルドパス」と呼ぶんでしょうね?

これでプロジェクトの基本的な設定は終わりかな。

不足していそうな設定

例えばサードパーティー製のJARを使わないなんてことはほぼ有り得ないわけで、これをWEB-INF/libに置くことはありそうですね。この先必要になったときにダウンロード&配置することにします。
あと何か作っている最中に設定のミスや足りないことに気付いたら、その時点で直していきます。まだまだ配布可能なプロジェクトにはなっていないということですね。