翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
スタックの作成とアプリケーションの実行
重要
この AWS OpsWorks Stacks サービスは 2024 年 5 月 26 日にサポート終了となり、新規および既存のお客様の両方で無効になっています。できるだけ早くワークロードを他のソリューションに移行することを強くお勧めします。移行についてご質問がある場合は、 AWS re:Post
このセクションでは、Tomcat クックブックを使用して、SimpleJSP という名前のシンプルな Java サーバー ページ (JSP) アプリケーションを実行する基本的なスタック設定を実装する方法について説明します。スタックは、TomCustom という名前の Tomcat ベースのカスタムレイヤーと MySQL で構成されます。SimpleJSP は、TomCustom にデプロイされ、MySQL データベースの一部の情報を表示します。 AWS OpsWorks スタックの使用方法の基本にまだ慣れていない場合は、まず「」を参照してくださいChef 11 Linux スタックの使用開始。
SimpleJSP アプリケーション
SimpleJSP アプリケーションは、データベース接続のセットアップ方法、およびスタックの MySQL データベースからデータを取得する方法の基本を示します。
<html>
<head>
<title>DB Access</title>
</head>
<body>
<%@ page language="java" import="java.sql.*,javax.naming.*,javax.sql.*" %>
<%
StringBuffer output = new StringBuffer();
DataSource ds = null;
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
try {
Context initCtx = new InitialContext();
ds = (DataSource) initCtx.lookup("java:comp/env/jdbc/mydb");
con = ds.getConnection();
output.append("Databases found:<br>");
stmt = con.createStatement();
rs = stmt.executeQuery("show databases");
while (rs.next()) {
output.append(rs.getString(1));
output.append("<br>");
}
}
catch (Exception e) {
output.append("Exception: ");
output.append(e.getMessage());
output.append("<br>");
}
finally {
try {
if (rs != null) {
rs.close();
}
if (stmt != null) {
stmt.close();
}
if (con != null) {
con.close();
}
}
catch (Exception e) {
output.append("Exception (during close of connection): ");
output.append(e.getMessage());
output.append("<br>");
}
}
%>
<%= output.toString() %>
</body>
</html>
SimpleJSP は、DataSource
オブジェクトを使用して MySQL データベースと通信します。Tomcat は、ウェブアプリケーションのコンテキスト設定ファイル内のデータを使用し、DataSource
オブジェクトを作成して初期化し、論理名に結合します。次に、Java Naming and Directory Interface (JNDI) ネーミングサービスで論理名を登録します。適切な DataSource
オブジェクトのインスタンスを取得するには、InitialContext
オブジェクトを 作成し、リソースの論理名をオブジェクトの lookup
メソッドに渡します。これにより、適切なオブジェクトを取得します。SimpleJSP の例の論理名 java:comp/env/jdbc/mydb
には、次のコンポーネントがあります。
-
ルート名前空間の
java
。名前の残りの部分とはコロン (:) で区切られます。 -
任意の追加の名前空間。スラッシュ (/) で区切られます。
Tomcat は、
comp/env
名前空間にリソースを自動的に追加します。 -
リソース名。ウェブアプリケーションのコンテキスト設定ファイルで定義され、名前空間とはスラッシュで区切られます。
この例では、リソース名は
jdbc/mydb
です。
データベースへの接続を確立するために、SimpleJSP は次の処理を実行します。
-
DataSource
オブジェクトのgetConnection
メソッドを呼び出し、Connection
オブジェクトを返します。 -
Connection
オブジェクトのcreateStatement
メソッドを呼び出し、データベースとの通信に使用するStatement
オブジェクトを作成します。 -
適切な
Statement
メソッドを呼び出すことで、データベースと通信します。SimpleJSP は、
executeQuery
を呼び出し、サーバーのデータベースをリスト表示する SHOW DATABASES クエリを実行します。
executeQuery
メソッドは、クエリの結果を含む ResultSet
オブジェクトを返します。SimpleJSP は、返された ResultSet
オブジェクトからデータベース名を取得し、それらを連結して出力文字列を作成します。最後に、この例では ResultSet
、Statement
、および Connection
の各オブジェクトを閉じます。JSP と JDBC の詳細については、「JavaServer Pages テクノロジー
スタックで SimpleJSP を使用するには、SimpleJSP をリポジトリに配置する必要があります。サポートされている任意のリポジトリを使用できますが、この後のセクションで説明する例のスタックで SimpleJSP を使用するには、SimpleJSP をパブリックの S3 アーカイブに配置する必要があります。その他の標準のリポジトリの使用方法の詳細については、「クックブックリポジトリ」を参照してください。
SimpleJSP を S3 アーカイブ リポジトリに配置するには
-
コード例を
simplejsp.jsp
という名前のファイルにコピーし、そのファイルをsimplejsp
という名前のディレクトリに配置します。 -
.zip
ディレクトリのsimplejsp
アーカイブを作成します。 -
パブリックの Amazon S3 バケットを作成し、
simplejsp.zip
をそのバケットにアップロードして、ファイルをパブリックにします。このタスクを実行する方法については、「Amazon Simple Storage Service の使用開始」を参照してください。
スタックの作成
SimpleJSP を実行するには、次のレイヤーを含んだスタックが必要です。
-
バックエンド MySQL サーバーをサポートする MySQL レイヤー。
-
Tomcat サーバー インスタンスをサポートするために Tomcat クックブックを使用するカスタムレイヤー。
スタックを作成するには
-
AWS OpsWorks スタックダッシュボードで、スタックの追加をクリックして新しいスタックを作成し、詳細 >> をクリックしてすべてのオプションを表示します。スタックを次のように設定します。
-
Name (名前) - ユーザー定義のスタック名です。この例では TomStack を使用します。
-
[Use custom Chef cookbooks] (カスタムChefのクックブックを使用) - トグルを [Yes] (はい) に設定します。いくつかの追加オプションが表示されます。
-
Repository type (リポジトリタイプ) - Git
-
Repository URL (リポジトリのURL) -
git://github.com/amazonwebservices/opsworks-example-cookbooks.git
。 -
Custom Chef JSON (カスタムChef JSON) - 次の JSON を追加します。
{ "tomcat": { "base_version": 7, "java_opts": "-Djava.awt.headless=true -Xmx256m" }, "datasources": { "ROOT": "jdbc/mydb" } }
残りのオプションについては、デフォルトをそのまま使用できます。
カスタム JSON は、次の処理を実行します。
-
Tomcat クックブックの
['base_version']
属性を上書きして Tomcat のバージョンを 7 に設定します。デフォルト値は 6 です。 -
Tomcat クックブックの
['java_opts']
属性を上書きし、インスタンスがヘッドレスであることを指定して JVM の最大ヒープサイズを 256 MB に設定します。デフォルト値では、Amazon Linux を実行しているインスタンスに対してはオプションが設定されません。 -
['datasources]
属性値を指定します。これにより、「tomcat::context」で説明するように、JDBC リソース名 (jdbc/mydb) がウェブアプリケーションのコンテキスト名 (ROOT) に割り当てられます。この最後の属性にはデフォルト値はありません。カスタム JSON で設定する必要があります。
-
-
[Add a layer] をクリックします。[Layer type] では [MySQL] を選択します。次に、[Add Layer] をクリックします。
-
ナビゲーションペインで [Instances] をクリックし、[Add an instance] をクリックします。[Add Instance] をクリックして、デフォルトの値をそのまま使用します。インスタンスに関する行で、[start] をクリックします。
-
[Layers] (レイヤー) ページに戻り、[+ Layer] (+ レイヤー) をクリックしてレイヤーを追加します。[Layer type] では [Custom] をクリックします。このテンプレートでは、
TomCustom
とtomcustom
を、それぞれレイヤーの名前と短縮名として使用します。 -
[Layers] (レイヤー) ページで、カスタムレイヤーに対して、[Recipes] (レシピ) をクリックし、[Edit] (編集) をクリックします。[Custom Chef Recipes] で、次のように、Tomcat クックブックのレシピをレイヤーのライフサイクルイベントに割り当てます。
-
[Setup] には
tomcat::setup
を入力し、[+] をクリックします。 -
[Configure] には
tomcat::configure
を入力し、[+] をクリックします。 -
[Deploy] には
tomcat::deploy
を入力し、[+] をクリックします。次に、[Save] をクリックします。.
-
-
ナビゲーションペインで [Apps] をクリックし、[Add an app] をクリックします。次のオプションを指定し、[Add App] をクリックします。
-
Name – アプリケーションの名前。この例では SimpleJSP を使用しており、 スタックによって生成される短縮名は simplejsp AWS OpsWorks になります。
-
App type (アプリケーションタイプ) - このオプションでは Other (その他) を設定します。
AWS OpsWorks スタックは、関連するサーバーインスタンスに標準アプリケーションタイプを自動的にデプロイします。[App type] でこれ以外を選択すると、 AWS OpsWorks スタックは単純に Deploy レシピを実行し、このレシピでデプロイを処理することになります。
-
Document root (ドキュメントルート) - このオプションを
ROOT
に設定します。Document root (ドキュメントルート) の値は、コンテキスト名を指定します。
-
Repository type (リポジトリタイプ) - このオプションを [S3 Archive (S3 アーカイブ)] に設定します。
-
Repository URL (リポジトリのURL) - このオプションは、先に作成したアプリケーションの Amazon S3 の URL に設定します。
その他のオプションについては、デフォルトの設定を使用します。
-
-
インスタンスページを使用して TomCustom レイヤーにインスタンスを追加して起動します。 AWS OpsWorks スタックは Setup レシピの完了後に新しいインスタンスで Deploy レシピを自動的に実行するため、インスタンスを起動すると SimpleJSP もデプロイされます。
-
TomCustom インスタンスがオンラインになったら、[Instances] ページでそのインスタンス名をクリックして詳細を確認します。パブリック IP アドレスをコピーします。http://
publicIP
/tc/appname.jsp
のように URL を作成します。たとえば、この URL はhttp://50.218.191.172/tc/simplejsp.jsp
のようになります。注記
リクエストを Tomcat に転送する Apache の URL は、デフォルトの
['tomcat']['apache_tomcat_bind_path']
属性である/tc/
に設定されます。SimpleJSP ドキュメントのルートは、ROOT
に設定されます。これは、/
に解決される特殊な値です。したがって URL は ".../tc/simplejsp.jsp" になります。 -
前のステップの URL をブラウザに貼り付けます。次のように表示されます。
Databases found: information_schema simplejsp test
注記
スタックに MySQL インスタンスがある場合、 AWS OpsWorks Stacks はアプリごとに、アプリの短縮名で という名前のデータベースを自動的に作成します。