チュートリアル : WEBアプリケーションの開発 05/19/03 09:45:01 |
このレッスンでは、データソースにアクセスするためのコード、およびデータベース接続情報をアプリケーションの設定ファイルに追加する方法について説明します。
注記: exteNd アプリケーションサーバを使用する場合、配備計画の編集時にこのサーバが実行されている必要があります。 別のアプリケーションサーバを使用する場合は、サーバ配備情報を指定するツールでサーバが実行されていることが必要となる場合があります。
アプリケーションでデータベースを使用できるようにするには、次の操作を実行する必要があります。
配備記述子では、外部サービスに接続するためにアプリケーションで使用する名前を特定できます。
リソース参照 データベース接続の名前は、配備記述子の参照セクション内にあります。 Proverbsアプリケーションでは、次のような名前になります。
jdbc/ProverbsDB
配備すると、このJNDI名はアプリケーションサーバのネーミングサービスに保存されます。
注記: JNDIとは、Java Naming and Directory Interfaceです。 アプリケーションサーバには、分散型コンピューティング環境でオブジェクトを検索するネーミングサービスが含まれます。
環境変数 アプリケーションでは、リソース参照は直接参照されず、代わりに環境変数に次のようなリソース参照の名前が保存されます。
jndi-datasource-name
このように間接的にすることで、アプリケーション固有のデータベース識別子がJavaコードでハードコード化されないようにします。 コードでは、環境変数の認識のみが必要となります。
環境変数の取得 Javaコードの定数は、ネーミングサービスのコンテキストおよび環境変数を特定します。
// Context in naming service for environment entries final static String JAVA_COMPONENT_ENV = "java:comp/env"; // Environment entry for data source name final static String JNDI_DATASOURCE_NAME = "jndi-datasource-name";
コードでは、文字列を連結して環境変数を検索します。つまり、変数を使用してリソース名を取得した後、ネーミングサービスでリソースを検索します。
このエクササイズでは、データベースのリソース参照、およびそのリソースの名前を特定する環境エントリを定義します。
Workbenchがまだ実行されていない場合は、起動してからProverbStartプロジェクトを開きます。
ヒント: 最近チュートリアルで作業を行った場合は、[File]>[Recent Files]の順に選 択してリストから選択し、ProverbStartを開きます。
ナビゲーションペインで、プロジェクトファイルProverbStart.spfを右クリックして、ポップアップメニューから[Open Deployment Descriptor]を選択します。
Workbenchで[Select Build Option]ダイアログボックスが表示された場合、デフォルトを受け入れて[OK]をクリックします。
要求された場合、Workbenchでプロジェクトが作成された後、記述子が開きます。
[Environment]を右クリックして、[Add]を選択します。
[Environment Property]プロパティシートで、次の情報を指定します。
オプション |
値 |
---|---|
Name |
jndi-datasource-name |
Value |
jdbc/ProverbsDB |
Entry type |
String |
Description |
Name of resource reference for database |
プロパティシートは、次のとおりです。
編集ペインで、[Resource References]を右クリックして、[Add]を選択します。
[UntitledResourceReference]を選択します。
プロパティインスペクタがまだ開いている場合、新しいリソース参照のプロパティが表示されます。 プロパティインスペクタを閉じた場合、新しいエントリを右クリックして[Properties]を選択して、プロパティインスペクタを開きます。
[Resource Reference]プロパティシートで、次の情報を指定します。
オプション |
値 |
---|---|
Name |
jdbc/ProverbsDB |
Resource type |
javax.sql.DataSource |
Authorization type |
Container |
Description |
Database reference for Proverbs application |
プロパティシートは、次のとおりです。
サーバ配備情報で、サーバの接続プールからのデータベースと配備記述子のリソース参照を関連付けます。 配備情報により、仮想リソースが実際のデータソースに結び付けられます。
サーバでの配備情報およびデータベースのリソース参照の処理方法は、アプリケーションサーバに応じて異なります。Workbenchでは、exteNd アプリケーションサーバの配備計画を作成するためのエディタが用意されています。 他のサーバについては、ご使用のサーバのツールおよびマニュアルを使用して、記述子のリソース参照とことわざのデータベース( Lesson 2, データソースの設定でセットアップします)を関連付ける方法を確認してください。
このエクササイズでは、サーバの配備情報が保存されたファイルに、XML要素または他の形式のデータを追加します。
次の情報を使用して、配備プロセスのサーバ固有の部分を編集します。
詳細情報および詳細な手順を示したエクササイズについては、配備の手順で ご使用のサーバのセクションを選択してください。
データソースのリソースをセットアップすると、サーバのネーミングサービスおよび接続プールを使用してDataSourceオブジェクトを取得するコードを作成する必要があります。 Proverbsアプリケーションでは、このコードは、Strutsで提供された標準のActionServletを拡張するProverbActionServlet内にあります。 このコードは、サーブレットのinit()メソッドを上書きしてDataSourceを取得します。
また、この新しいサーブレットクラスを使用するよう、サーバに命令する必要もあります。 この処理は、配備記述子で行います。
このエクササイズでは、ActionServletを拡張するProverbActionServletクラスを参照します。
Workbenchのアーカイブレイアウトビューで、[WEB-INF]ディレクトリを[proverb]ディレクトリまで下に展開して、[proverb]を選択します。
init()メソッドにより、標準の初期化タスクを実行するペアレントのinit()メソッドが呼び出されます。
super.init();
サーバのネーミングサービスにアクセスしてDataSourceオブジェクトを取得するコードを確認します。 サーブレットコンテキストにDataSourceオブジェクトが保存されます。
コードは次のようになります(コメントは削除されています)。
Context ic = new InitialContext(); Context env = (Context) ic.lookup(Constants.JAVA_COMPONENT_ENV); String dsName = (String) env.lookup(Constants.JNDI_DATASOURCE_NAME); DataSource ds = (DataSource) env.lookup(dsName); getServletContext().setAttribute(Constants.DB_KEY, ds);
このエクササイズでは、配備記述子を編集してアプリケーションの起動サーブレットを変更します。
ナビゲーションペインで、プロジェクトファイルProverbStart.spfを右クリックして、ポップアップメニューから[Open Deployment Descriptor]を選択します。
Workbenchで[Select Build Option]ダイアログボックスが表示された場合、デフォルトを受け入れて[OK]をクリックします。
要求された場合、Workbenchでプロジェクトが作成された後、記述子が開きます。
[Servlet]プロパティシートで、サーブレットクラスを[com.proverb.ProverbActionServlet]に変更します。 省略記号ボタンをクリックして、リストからクラスを選択できます。
説明を、[Customized version of Struts action controller]に変更します。
プロパティシートは、次のとおりです。
アプリケーションの開発 このレッスンでは、Proverbsチュートリアルアプリケーションの次の部分を作成するか、次の部分について学習しました。
Workbenchツールの使用 Workbenchで、次のツールを使用しました。
次のレッスン 次のレッスンでは、Strutsアクションをコード化して設定する方法について学習します。
チュートリアル : WEBアプリケーションの開発 05/19/03 09:45:01 |
Copyright © 1997, 1998, 1999, 2000, 2001, 2002, 2003 SilverStream Software, LLC, a wholly owned subsidiary of Novell, Inc. All rights reserved.