AWS Java Webアプリケーションの作成と動作確認
早速、手順に従って作業を進めていきましょう。本節では、手順の1と2、すなわち、プロジェクトの作成とローカルでの動作確認を行っていきます。
AWS Java Webプロジェクトの作成
第6回で解説したように、JavaのWebアプリケーションは、WARファイル構成を基本としています。これは、AWSでも例外ではありません。何より、Elastic BeanstalkのJava Webアプリケーションは、その実行環境としてTomcatを利用するので、warファイルをデプロイします。ということは、Tomcatプロジェクトでも、動的Webプロジェクトでも、warファイルを生成すれば、Elastic Beanstalk上で実行できそうですが、実は、WARファイル構成以外にも必要なファイル類があります。
それらも含めて適切なプロジェクトを作成してくれる機能が、AWS Toolkit for Eclipseにはあります。それを利用していきます。なお、パースペクティブとしては、Java EEパースペクティブが推奨されています。ツールバーに追加された
アイコンの▼をクリックしてください。図6のドロップダウンメニューが表示されます。
表示されたメニューから[新規AWS Java Webプロジェクト]を選択してください。すると、図7の新規AWS Java Webプロジェクト画面が表示されます。
以下の内容を入力、選択し、[完了]をクリックしてください。なお、入力内容に関して少し補足しておきます。AWS Java Webプロジェクトは、Mavenというビルドツールを使用します。このMavenは、アプリケーションを作成する団体、企業、グループを特定するためのIDを、Javaのパッケージ形式をベースに設定するようにしています。通常、これはそのグループのドメインを逆にしたものをベースに採用します。
また、プロジェクトを特定するための文字列を、アーティファクトIdとして指定し、このグループIDとアーティファクトIdをつなげて、そのプロジェクトのルートパッケージとするようにしています。
- グループID: com.example.eclipse
- アーティファクトId: firstawsjava
- バージョン: 1.0.0(自動入力済み)
- パッケージ名: com.example.eclipse.firstawsjava(自動入力済み)
- プロファイルの選択: default(自動選択済み)
- Start from: Basic Amazon Elastic Beanstalk Worker Tier Applicationを選択
[完了]をクリックすると、初回はプロジェクトのビルドに必要なさまざまなライブラリ類をダウンロードするので、少々時間がかかります。無事プロジェクトが作成されたら、プロジェクトエクスプローラー上にfirstawsjavaフォルダが生成されます(図8)。
HelloServlet.javaの作成
次に、このプロジェクト内に、「HelloWorld!」と画面に表示させるサーブレットを作成していきます。ただ、プロジェクトを作成したデフォルトの状態では、すでに、WorkerServlet.javaというサーブレットが存在し、どのURLでアクセスしてきても、このサーブレットが動作するようになっています。そこを修正します。
プロジェクトエクスプローラーから[デプロイメント記述子:firstawsjava]をダブルクリックします。このファイルは、実体がsrc/main/webapp/WEB-INF/web.xmlなので、その内容が表示されます。現状は、図9のような記述になっています。
このweb.xmlファイル内の記述を、リスト1のように、xml宣言とweb-appタグだけ残して、残りを削除します(図10)。
<?xml version="1.0" encoding="UTF-8"?> <web-app> </web-app>
これで、作成されたサーブレットファイルが、そのファイル内のコードにて設定されたURLで実行できるようになります。図11は、第6回や第7回で利用したHelloServlet.javaと同じものを配置したプロジェクトです。
これで、URLパターンが/helloで「HelloWorld!」と表示できる準備が整いました。
ローカルサーバでの動作確認
ここで作成したfirstawsjavaプロジェクトを、ローカルサーバで実行させて動作確認を行いましょう。ローカルサーバとして、Elastic Beanstalkと同じTomcat 8.5を利用します。第7回を参考に、Tomcat 8.5サーバを追加し、そのサーバにfirstawsjavaプロジェクトを追加してください。追加が完了すると、サーバビューは図12のようになっています。
早速サーバを起動して、動作確認を行いたいところですが、動的Webプロジェクトとは違い、たとえプロジェクトが同期済みになっていても、サーバにデプロイされた状態にはなりません。AWS Java Webプロジェクトでは、もう一手間、ビルドが必要です。
現状、プロジェクトフォルダ内のtargetフォルダを見ると、図13のようになっています。
m2e-wtpフォルダしかありません。プロジェクトのビルドを行うと、このtargetフォルダ内にwarファイルが生成されます。そのwarファイルがローカルサーバと同期する仕組みとなっています。そのビルドは、プロジェクトフォルダを右クリックして表示されるメニューから
[実行] > [Maven install]
を選択します(図14)。
すると、targetフォルダ内は図15のようになり、今までなかったwarファイルが生成されているのが確認できます。
これで、準備が整いました。ローカルサーバを起動し、ブラウザから以下のURLにアクセスしてください。
ブラウザに「HelloWorld!」と表示されます。なお、AWS Java Webプロジェクトは、図11でも確認できるように、src/main/webapp直下に、同じく「HelloWorld!」と表示されるindex.jspがデフォルトで生成されています。
warファイルでは、このindex.jspは、アプリケーション直下に格納されるようになっています。そのため、以下のコンテキストルートだけのURLでも「HelloWorld!」と表示されるようになっています。
