さわらブログ

さわら(@xhiroga)の技術ブログ

【備忘録】eclipseのエンタープライズ・アプリケーション・プロジェクトについて

eclipseのプロジェクトが何なのかしっくり来ていなかったので。

背景

現場でプロジェクトがサーバーに追加できない状態になり、解決策を調べるうちに「そもそもプロジェクトとは?」「もっと言うと、Java EEとは?」って状態になったので。

Java EEとは

Webアプリケーションの作成に役立つJava標準のライブラリ群。   サーバ・アプリケーション間のインターフェースであるServletPythonだとWSGI)、テンプレートエンジンのJSPPythonだとJinja2他)等々がある。   それだけでなく、アプリケーションサーバーが複数のアプリケーションを一つのアーカイブとして扱うための形式を定義している。その際のアーカイブがEARファイルである。

eclipseのプロジェクトとは

eclipseが複数のソースコードをデプロイやバージョン管理のための一つの単位として扱うためのフォルダ。
ただのフォルダではなく、離れたフォルダのリソースを参照するように設定することができる。

中でもJ2EE(Java EEの古いバージョン)で定義したディレクトリ構成に対応するフォルダをJ2EEモジュール・プロジェクトと称するようだ。
それらJ2EEモジュール・プロジェクトを一つのアーカイブとして扱うため、EARファイルの雛形となるのがエンタープライズ・アプリケーション・プロジェクトである。

エンタープライズ・アプリケーション・プロジェクトとプロジェクト・ファセット

J2EEに準ずるアプリケーションはxmlファイルにそのための設定を持つ(と思う、実際には見ていない...。)こうした設定を、GUIベースでプロジェクトに対する特性として設定できるのがeclipseのプロジェクト・ファセットである。
EARファイルの作成には親のエンタープライズ・アプリケーション・プロジェクトと、子のJ2EEモジュール・プロジェクト(特にサーバーに追加する場合は動的Webモジュールプロジェクト等)が必要になる。
こうした定義はプロジェクト・ファセットで行う。
モジュール間の依存関係は、本来はEAR > META-INF > application.xmlで設定する。eclipseの場合はプロジェクトのプロパティからJ2EEモジュール依存関係で設定可能。

プロジェクト・ファセットの特性のバージョン関係は依存性があるので、うまくプロジェクトが追加できないことがあれば設定を見直すべし。

その他現場で役立つこと

ソースの修正が反映されない場合、クラスファイルが再作成されていないか再デプロイされいていないかのいずれか。
前者の場合はクリーンビルド(クラスファイルを自動削除後にビルド)後者の場合はクリーンデプロイ(サーバーが参照するディレクトリ上のクラスファイルを削除してデプロイ)が効果あり。もちろん手動で消しても効果は同じ(ビルドし忘れなければ)

参考資料

Help - Eclipse Platform eclipse公式ドキュメント

IBM Knowledge Center IBMeclipse関連ドキュメント。↑の日本語訳があると考えてよさそう。

いまさら聞けないサーバーサイドJava 第1回 これだけは知っておきたいJ2EEの基本 | 技術トピックス | ウルシステムズ株式会社