AWS Elastic Beanstalk
開発者ガイド

プロジェクト フォルダを構築する

Tomcat サーバーにデプロイされた場合に機能するように、コンパイルされた Java プラットフォーム Enterprise Edition (Java EE) ウェブアプリケーションアーカイブ (WAR ファイル) は、特定のガイドラインに従って構築される必要があります。プロジェクトのディレクトリが同じ基準を満たす必要はありませんが、同じ方法でプロジェクトのディレクトリを構築し、コンパイルやパッケージングを簡素化することが推奨されます。WAR ファイルコンテンツなどのプロジェクトフォルダを構築すると、ファイルがどのように関連付けられていて、ウェブサーバーでどのように動作するかを理解するのにも役立ちます。

次の推奨階層では、ウェブアプリケーションのソースコードは、[src] ディレクトリに配置され、構築スクリプトや構築スクリプトが生成する WAR ファイルから隔離されます。

~/workspace/my-app/ |-- build.sh - Build script that compiles classes and creates a WAR |-- README.MD - Readme file with information about your project, notes |-- ROOT.war - Source bundle artifact created by build.sh `-- src - Source code folder |-- WEB-INF - Folder for private supporting files | |-- classes - Compiled classes | |-- lib - JAR libraries | |-- tags - Tag files | |-- tlds - Tag Library Descriptor files | `-- web.xml - Deployment Descriptor |-- com - Uncompiled classes |-- css - Style sheets |-- images - Image files |-- js - JavaScript files `-- default.jsp - JSP (JavaServer Pages) webpage

[src] フォルダの内容は、サーバーにパッケージングしてデプロイする内容と一致します([com] フォルダは例外です)。com フォルダには、コンパイルされていないクラス (.java ファイル) が含まれます。これらをコンパイルし、アプリケーションコードからアクセスできるように WEB-INF/classes ディレクトリに配置する必要があります。

WEB-INF ディレクトリには、ウェブサーバー上でパブリックに動作しないコードや設定が含まれます。ソースディレクトリのルートの他のフォルダ (cssimagesjs) はウェブサーバー上の対応するパスで一般公開されます。

次の例は、前述のプロジェクトディレクトリと同一ですが、ファイルとサブディレクトリの数が多い点のみが異なります。このプロジェクト例には、シンプルなタグ、モデル、サポートクラス、さらに record リソースのための Java サーバーページ(JSP)が含まれます。さらに、Bootstrap 用のスタイルシートと JavaScript、デフォルトの JSP ファイル、および 404 エラーのエラーページが含まれます。

[WEB-INF/lib] には、PostgreSQL の Java Database Connectivity(JDBC) ドライバを含む Java アーカイブ (JAR) ファイルが含まれます。クラスファイルがまだコンパイルされていないため、[WEB-INF/classes] は空です。

~/workspace/my-app/ |-- build.sh |-- README.MD |-- ROOT.war `-- src |-- WEB-INF | |-- classes | |-- lib | | `-- postgresql-9.4-1201.jdbc4.jar | |-- tags | | `-- header.tag | |-- tlds | | `-- records.tld | `-- web.xml |-- com | `-- myapp | |-- model | | `-- Record.java | `-- web | `-- ListRecords.java |-- css | |-- bootstrap.min.css | `-- myapp.css |-- images | `-- myapp.png |-- js | `-- bootstrap.min.js |-- 404.jsp |-- default.jsp `-- records.jsp

シェルスクリプトを使用して WAR ファイルを構築する

[build.sh] は、Java クラスをコンパイルする非常にシンプルなシェルスクリプトです。また、WAR ファイルを構築してローカルテストのために Tomcat の [webapps] ディレクトリにコピーします。

cd src javac -d WEB-INF/classes com/myapp/model/Record.java javac -classpath WEB-INF/lib/*:WEB-INF/classes -d WEB-INF/classes com/myapp/model/Record.java javac -classpath WEB-INF/lib/*:WEB-INF/classes -d WEB-INF/classes com/myapp/web/ListRecords.java jar -cvf ROOT.war *.jsp images css js WEB-INF .ebextensions cp ROOT.war /Library/Tomcat/webapps mv ROOT.war ../

WAR ファイルでは、前述の例の [src] ディレクトリ ([src/com] フォルダを除きます) に存在する同じストラクチャを探します。jar コマンドは自動的に META-INF/MANIFEST.MF ファイルを作成します。

~/workspace/my-app/ROOT.war |-- META-INF | `-- MANIFEST.MF |-- WEB-INF | |-- classes | | `-- com | | `-- myapp | | |-- model | | | `-- Records.class | | `-- web | | `-- ListRecords.class | |-- lib | | `-- postgresql-9.4-1201.jdbc4.jar | |-- tags | | `-- header.tag | |-- tlds | | `-- records.tld | `-- web.xml |-- css | |-- bootstrap.min.css | `-- myapp.css |-- images | `-- myapp.png |-- js | `-- bootstrap.min.js |-- 404.jsp |-- default.jsp `-- records.jsp

.gitignore を使用する

コンパイルされたクラスファイルと WAR ファイルが Git レポジトリにコミットされる、または Git コマンドの実行時にこれらのファイルに関するメッセージが表示されることを防ぐため、プロジェクトフォルダの .gitignore という名前のファイルに関連ファイルタイプを追加します。

~/workspace/myapp/.gitignore

*.zip *.class