First Previous Next Last チュートリアル : WEBアプリケーションの開発  05/19/03 09:45:01 

Lesson 5    データベースアクセスのセットアップ

 
Top of page

学習する内容

このレッスンでは、データソースにアクセスするためのコード、およびデータベース接続情報をアプリケーションの設定ファイルに追加する方法について説明します。

学習内容は次のとおりです。

 
Top of section

実行する内容

  1. 配備記述子にリソース参照を追加する

  2. サーバ配備情報でデータベースを特定する

  3. Struts ActionServletを拡張して初期化中にデータソースを取得する

  4. アプリケーションの起動サーブレットのクラスを変更する

所要時間   約10分

注記:   exteNd アプリケーションサーバを使用する場合、配備計画の編集時にこのサーバが実行されている必要があります。 別のアプリケーションサーバを使用する場合は、サーバ配備情報を指定するツールでサーバが実行されていることが必要となる場合があります。

 
Top of page

アプリケーションに対するデータソースの有効化

アプリケーションでデータベースを使用できるようにするには、次の操作を実行する必要があります。

この操作は、次のエクササイズで実行します。

 
Top of section

配備記述子のリソース参照

配備記述子では、外部サービスに接続するためにアプリケーションで使用する名前を特定できます。

リソース参照   データベース接続の名前は、配備記述子の参照セクション内にあります。 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";

コードでは、文字列を連結して環境変数を検索します。つまり、変数を使用してリソース名を取得した後、ネーミングサービスでリソースを検索します。

 
Top of section

EXERCISE 5-1: 配備記述子にリソース参照を追加する

このエクササイズでは、データベースのリソース参照、およびそのリソースの名前を特定する環境エントリを定義します。

  1. Workbenchがまだ実行されていない場合は、起動してからProverbStartプロジェクトを開きます。

    ヒント:   最近チュートリアルで作業を行った場合は、[File]>[Recent Files]の順に選 択してリストから選択し、ProverbStartを開きます。

  2. ナビゲーションペインで、プロジェクトファイルProverbStart.spfを右クリックして、ポップアップメニューから[Open Deployment Descriptor]を選択します。

  3. Workbenchで[Select Build Option]ダイアログボックスが表示された場合、デフォルトを受け入れて[OK]をクリックします。

    要求された場合、Workbenchでプロジェクトが作成された後、記述子が開きます。

  4. 編集ペインで、[Descriptor]タブがまだ選択されていない場合は選択します。

  5. Environment]を右クリックして、[Add]を選択します。

    Tut5-1envAdd

  6. UntitledEnvironmentProperty]を右クリックして、[Properties]を選択します。

  7. [Environment Property]プロパティシートで、次の情報を指定します。

    オプション

    Name

    jndi-datasource-name

    Value

    jdbc/ProverbsDB

    Entry type

    String

    Description

    Name of resource reference for database

    プロパティシートは、次のとおりです。

    Tut5-1EnvProps

  8. 編集ペインで、[Resource References]を右クリックして、[Add]を選択します。

    Tut5-1resrcAdd

  9. UntitledResourceReference]を選択します。

    プロパティインスペクタがまだ開いている場合、新しいリソース参照のプロパティが表示されます。 プロパティインスペクタを閉じた場合、新しいエントリを右クリックして[Properties]を選択して、プロパティインスペクタを開きます。

  10. [Resource Reference]プロパティシートで、次の情報を指定します。

    オプション

    Name

    jdbc/ProverbsDB

    Resource type

    javax.sql.DataSource

    Authorization type

    Container

    Description

    Database reference for Proverbs application

    プロパティシートは、次のとおりです。

    Tut5-1resrcProps

  11. プロパティインスペクタを閉じます。

  12. 記述子ファイルを保存して閉じます。

 
Top of section

サーバ配備情報でのデータベースの特定

サーバ配備情報で、サーバの接続プールからのデータベースと配備記述子のリソース参照を関連付けます。 配備情報により、仮想リソースが実際のデータソースに結び付けられます。

サーバでの配備情報およびデータベースのリソース参照の処理方法は、アプリケーションサーバに応じて異なります。Workbenchでは、exteNd アプリケーションサーバの配備計画を作成するためのエディタが用意されています。 他のサーバについては、ご使用のサーバのツールおよびマニュアルを使用して、記述子のリソース参照とことわざのデータベース( Lesson 2, データソースの設定でセットアップします)を関連付ける方法を確認してください。

 
Top of section

EXERCISE 5-2: サーバ配備情報でデータベースを特定する

このエクササイズでは、サーバの配備情報が保存されたファイルに、XML要素または他の形式のデータを追加します。

  1. 次の情報を使用して、配備プロセスのサーバ固有の部分を編集します。

    For more information    詳細情報および詳細な手順を示したエクササイズについては、配備の手順で ご使用のサーバのセクションを選択してください。

    Server

    操作内容

    オプションおよび値、またはファイルのコンテンツ

    exteNd アプリケーションサーバ

    配備計画を編集します。 配備計画を開く際には、Workbenchでプロジェクトを作成し、配備記述子に加えた変更内容が反映されることを確認してください。 また、接続プールのリストを取得するためには、exteNd アプリケーションサーバが実行されていることも確認してください。

    jdbc/ProverbsDBというリソース参照のプロパティシートを開きます。

    Connection pool] - すでにサーバに追加したことわざのデータベースを指定します。 提供されたCloudscapeデータベースを使用している場合は、ProverbsCloudと指定します(プロジェクトをJ2EE 1.3プロジェクトとして定義し、SilverStream 4.xサーバまたはNovell 5.xサーバに配備している場合は、/JDBC/ProverbsCloudと指定します)。

    Sun Reference Implementation

    META-INFディレクトリのアーカイブに含まれたsun-j2ee-ri.xmlを編集します。

    このXMLをcontext-root要素の後でweb要素内に追加します。

      <resource-ref>
       <res-ref-name>
         jdbc/ProverbsDB
       </res-ref-name>
       <jndi-name>
         ProverbsCloud
       </jndi-name>
      </resource-ref>
    

    ProverbsCloudの代わりに、ことわざのデータベースをサーバにインストールした際に使用したJNDI名を使用します。

    Jakarta Tomcat

    -

    Tomcatは、サーブレットコンテナで、Proverbsアプリケーションで必要なデータベースアクセスをサポートしていません。

    BEA WebLogic

    WEB-INFディレクトリのアーカイブに含まれたweblogic.xmlを編集します。

    weblogic-version要素の後にこのXMLを追加します。

      <reference-descriptor>
       <resource-description>
        <res-ref-name>
           jdbc/ProverbsDB
        </res-ref-name>
        <jndi-name>
           ProverbsCloud
        </jndi-name>
       </resource-description>
      </reference-descriptor>
    

    ProverbsCloudの代わりに、ことわざのデータベースをサーバにインストールした際に使用したJNDI名を使用します。

    IBM WebSphere

    -

    -

    Oracle9iAS

    -

    -

 
Top of section

アプリケーション起動時のデータソースの取得

データソースのリソースをセットアップすると、サーバのネーミングサービスおよび接続プールを使用してDataSourceオブジェクトを取得するコードを作成する必要があります。 Proverbsアプリケーションでは、このコードは、Strutsで提供された標準のActionServletを拡張するProverbActionServlet内にあります。 このコードは、サーブレットのinit()メソッドを上書きしてDataSourceを取得します。

また、この新しいサーブレットクラスを使用するよう、サーバに命令する必要もあります。 この処理は、配備記述子で行います。

 
Top of section

EXERCISE 5-3: Struts ActionServletを拡張して初期化中にデータソースを取得する

このエクササイズでは、ActionServletを拡張するProverbActionServletクラスを参照します。

  1. Workbenchのアーカイブレイアウトビューで、[WEB-INF]ディレクトリを[proverb]ディレクトリまで下に展開して、[proverb]を選択します。

  2. ProverbActionServlet.java]をダブルクリックして、編集ペインで開きます。

  3. クラスの宣言により、ActionServletが拡張されます。

  4. init()メソッドにより、標準の初期化タスクを実行するペアレントのinit()メソッドが呼び出されます。

      super.init();
    
  5. サーバのネーミングサービスにアクセスして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);
    
  6. (オプション) Constants.javaを開き、このコードで使用されている定数の値を確認します。

  7. ファイルを閉じます。

 
Top of section

EXERCISE 5-4: アプリケーションの起動サーブレットのクラスを変更する

このエクササイズでは、配備記述子を編集してアプリケーションの起動サーブレットを変更します。

  1. ナビゲーションペインで、プロジェクトファイルProverbStart.spfを右クリックして、ポップアップメニューから[Open Deployment Descriptor]を選択します。

  2. Workbenchで[Select Build Option]ダイアログボックスが表示された場合、デフォルトを受け入れて[OK]をクリックします。

    要求された場合、Workbenchでプロジェクトが作成された後、記述子が開きます。

  3. [Servlets]セクションで、[action]を右クリックして[Properties]を選択します。

  4. [Servlet]プロパティシートで、サーブレットクラスを[com.proverb.ProverbActionServlet]に変更します。 省略記号ボタンをクリックして、リストからクラスを選択できます。

  5. 説明を、[Customized version of Struts action controller]に変更します。

    プロパティシートは、次のとおりです。

    Tut5-5actionServlet

  6. プロパティインスペクタを閉じます。

  7. 記述子を保存して閉じます。

 
Top of page

実行した内容のまとめ

アプリケーションの開発   このレッスンでは、Proverbsチュートリアルアプリケーションの次の部分を作成するか、次の部分について学習しました。

Workbenchツールの使用   Workbenchで、次のツールを使用しました。

次のレッスン   次のレッスンでは、Strutsアクションをコード化して設定する方法について学習します。

    First Previous Next Last チュートリアル : 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.