ヘッダーをスキップ

Oracle Application Server Containers for J2EE サーブレット開発者ガイド
10gリリース2(10.1.2)
B15633-02
目次
目次
索引
索引

戻る 次へ

A
オープン・ソース・フレームワークおよびユーティリティ

一般的に使用されているオープン・ソース・フレームワークおよびユーティリティには、Oracle Application Server 10gリリース2(10.1.2)でOC4Jとともに使用できるものがあります。この付録では、そのうちの2つ、Jakarta StrutsおよびJakarta log4jを構成および使用する方法を説明します。

ここでは、OC4Jスタンドアロン環境での、これらのオープン・ソース・ユーティリティの構成および使用について説明します。次の各項で詳細に説明します。

OC4JにおけるJakarta Strutsの構成および使用

次の各項で、Jakarta StrutsをOC4Jスタンドアロン環境で使用するための手順について説明します。

Jakarta Strutsの概要

Jakarta Strutsは、オープン・ソース・フレームワークで、Javaサーブレット、JavaServer PagesおよびXMLなどのオープン・スタンダードを使用したWebアプリケーションの開発を支援します。Strutsは、Model-View-Controller(MVC)パターンに基づいたモジュール化アプリケーション開発モデルをサポートしています。Strutsを使用することにより、業界標準や実証済設計モデルに基づき、アプリケーションの拡張可能な開発環境を作成できます。

次の各項で、Strutsライブラリ、ドキュメントおよびサンプル・アプリケーションをOC4Jスタンドアロン環境にインストールする方法について説明します。このマニュアルでは、Strutsを使用したアプリケーションの構築方法は説明しません。StrutsのWebサイトにあるユーザー・ガイド、インストール・ガイドおよびその他のドキュメントを参照してください。次のサイトから入手可能です。

http://struts.apache.org

http://struts.apache.org/learning.html


注意

Strutsは、Apache Jakartaプロジェクトの一部で、Apache Software Foundationによって運営されています。 


Strutsバイナリ配布版のダウンロード

Strutsの配布版は、次のサイトから入手可能です。

http://struts.apache.org/

アーカイブ・ファイルをこのサイトからダウンロードします。プラットフォームに合ったフォーマット(ZIPファイルまたは圧縮済のTARファイル)を選択し、ローカル・ファイル・システムに保存します。


注意

次の項では、Struts 1.0.2バージョンを使用する手順を示していますが、それ以降のバージョンのStrutsでも同じ一般的な手順を使用してOC4Jにデプロイできます。ただし、新しいバージョンには機能が追加され、ライブラリ・ファイルが増えている可能性があります。 


Strutsバイナリ配布版の解凍

WinZipまたはTARなど、プラットフォームに合ったツールを使用して、ダウンロードしたStrutsバイナリ配布版のアーカイブ・ファイルを解凍します。これにより、次のディレクトリ構造が作成されます(Struts 1.0.2リリースの場合)。

jakarta-struts-1.0.2/INSTALL
jakarta-struts-1.0.2/LICENSE
jakarta-struts-1.0.2/README

jakarta-struts-1.0.2/lib/jdbc2_0-stdext.jar
jakarta-struts-1.0.2/lib/struts.jar
jakarta-struts-1.0.2/lib/struts.tld
jakarta-struts-1.0.2/lib/struts-bean.tld
jakarta-struts-1.0.2/lib/struts-config_1_0.dtd
jakarta-struts-1.0.2/lib/struts-form.tld
jakarta-struts-1.0.2/lib/struts-html.tld
jakarta-struts-1.0.2/lib/struts-logic.tld
jakarta-struts-1.0.2/lib/struts-template.tld
jakarta-struts-1.0.2/lib/web-app_2_2.dtd
jakarta-struts-1.0.2/lib/web-app_2_3.dtd

jakarta-struts-1.0.2/webapps/struts-blank.war
jakarta-struts-1.0.2/webapps/struts-documentation.war
jakarta-struts-1.0.2/webapps/struts-example.war
jakarta-struts-1.0.2/webapps/struts-exercise-taglib.war
jakarta-struts-1.0.2/webapps/struts-template.war
jakarta-struts-1.0.2/webapps/struts-upload.war

Strutsドキュメントのインストールおよびアクセス

Strutsドキュメントは、Webアプリケーションとして、StrutsアーカイブのwebappsディレクトリのWARファイル内に用意されています。次の手順を、選択したStrutsのバージョンに合せて使用し、StrutsドキュメントWebアプリケーションをOC4Jデフォルト・アプリケーションにデプロイします。

構成ファイルは、j2ee/home/configディレクトリに存在します。

  1. OC4Jグローバル・アプリケーション・ディスクリプタapplication.xmlに、struts-documentation.warファイル用に新規の<web-module>要素を追加します。この要素は、ファイル内に存在している任意の<web-module>要素の後に置きます。

    Strutsバイナリ配布版を解凍したディレクトリのパスを指定します。次にエントリの例を示します。

    <orion-application ... >
       ...
       <web-module id="struts-documentation"
       path="your_path/jakarta-struts-1.0.2/webapps/struts-documentation.war" />
    ...
    </orion-application>
    
    
  2. WebサイトのXMLファイルhttp-web-site.xmlに、ドキュメントWebアプリケーションをURLコンテキスト・パスにバインドするための新規<web-app>要素を追加します。この要素は、ファイル内に存在している任意の<web-app>要素の後に置きます。次に、/struts/docをStrutsドキュメントのURLコンテキスト・パスに指定するエントリの例を示します。

    <web-site ... >
       ...
       <web-app application="default" name="struts-documentation"
                root="/struts/doc" />
       ...
    </web-site>
    
    

    OC4Jのデフォルト・アプリケーションを使用するためのapplication="default"設定に注意してください。OC4JにデプロイされるWebアプリケーションは、すべてJ2EEアプリケーション内に存在する必要があります。通常、このために、WebアプリケーションのWARファイルをJ2EEアプリケーションのEARファイル内にパッケージ化します。ただし、この例のように、OC4Jデフォルト・アプリケーションを使用してスタンドアロンWARファイルをデプロイして、手順を簡略化することもできます。

  3. コマンドラインからOC4Jを起動します。

    % java -jar oc4j.jar
    
    

    次のような出力が表示されます。

    Auto-unpacking /java/jakarta-struts-1.0.2/webapps/struts-documentation.war
    ... done.
    Oracle Application Server (10.1.2.0.0) Containers for J2EE initialized
    
    

    struts-documentation.warを解凍すると、jakarta-struts-1.0.2/webappsディレクトリの下にstruts-documentationディレクトリおよびサブディレクトリが作成および移入されます。

  4. http-web-site.xmlで指定したURLコンテキスト・パスを使用してドキュメントにアクセスします。

    http://host:8888/struts/doc
    
    

    StrutsドキュメントのWelcomeページが表示されます。

StrutsサンプルWebアプリケーションのインストール

Strutsバイナリ配布版には、サンプルWebアプリケーションがwebappsディレクトリのWARファイル内に用意されています。ドキュメントWebアプリケーションと同様、StrutsサンプルWebアプリケーションもOC4Jデフォルト・アプリケーションにデプロイできます。次の手順を、選択したStrutsのバージョンに合せて使用します。構成ファイルは、j2ee/home/configディレクトリに存在します。

  1. OC4Jグローバル・アプリケーション・ディスクリプタapplication.xmlに、struts-example.warファイル用に新規の<web-module>要素を追加します。Strutsバイナリ配布版を解凍したディレクトリのパスを指定します。次にエントリの例を示します。

    <web-module id="struts-example"
       path="your_path/jakarta-struts-1.0.2/webapps/struts-example.war" />
    
    

    これを、struts-documentation.war用に作成した<web-module>要素の直後に追加します。

  2. WebサイトのXMLファイルhttp-web-site.xmlに、サンプルWebアプリケーションをURLコンテキスト・パスにバインドするための新規の<web-app>要素を追加します。次に、/struts/exampleをサンプルWebアプリケーションのURLコンテキスト・パスに指定するエントリの例を示します。

    <web-app application="default" name="struts-example"
             root="/struts/example" />
    
    

    これを、ドキュメントWebアプリケーション用に作成した<web-app>要素の直後に追加します。

    ドキュメントWebアプリケーションと同様、application="default"設定を使用すると、OC4Jデフォルト・アプリケーション内にサンプルWebアプリケーションが含まれます。

  3. コマンドラインからOC4Jを起動します。

    % java -jar oc4j.jar
    
    

    次のような出力が表示されます。

    Auto-unpacking /java/jakarta-struts-1.0.2/webapps/struts-example.war
    ...done.
    Oracle Application Server (10.1.2.0.0) Containers for J2EE initialized
    
    

    struts-example.warを解凍すると、jakarta-struts-1.0.2/webappsディレクトリの下にstruts-exampleディレクトリおよびサブディレクトリが作成および移入されます。

  4. http-web-site.xmlで指定したURLコンテキスト・パスを使用してサンプルWebアプリケーションにアクセスします。

    http://host:8888/struts/example
    
    

    Strutsサンプル・アプリケーションのWelcomeページが表示されます。

Strutsフレームワークを使用したユーザー・アプリケーションのデプロイ

Strutsフレームワークを使用してユーザー・アプリケーションをデプロイするには、Strutsライブラリから必要な部分をユーザー・アプリケーションのWARファイルにパッケージ化し、Strutsコンポーネントの必須エントリを使用して、標準のweb.xmlデプロイメント・ディスクリプタを構成します。すると、WebアプリケーションがWARファイルとして作成およびパッケージ化されます。

次の手順を、選択したStrutsのバージョンに合せて使用します。


注意

Strutsを使用するために構成されたWARファイルの例が、Strutsアーカイブ・ファイルのwebappsフォルダにstruts-blank.warとして提供されています。この例は、ユーザーがWebアプリケーションを作成する際に、テンプレートとして使用できます。 


  1. Strutsのlibディレクトリからユーザー・アプリケーションの/WEB-INF/libディレクトリに、Strutsライブラリをコピーします。次に、UNIX環境(アーカイブ・ファイルを解凍したディレクトリから)の例を示します。「%」はシステム・プロンプトです。

    % cp jakarta-struts-1.0.2/lib/struts.jar web-inf/lib
    
    
  2. Strutsタグ・ライブラリ・ディスクリプタ・ファイル(JSPタグ・ライブラリの場合はすべての.tldファイル)を、Strutsのlibディレクトリからユーザー・アプリケーションの/WEB-INFディレクトリにコピーします。

    % cp jakarta-struts-1.0.2/lib/*.tld web-inf
    
    


    注意

    JSP 1.1の手段を使用するこれらの手順は、JSPタグ・ライブラリ・ディスクリプタ・ファイルにアクセスする方法の1つにすぎません。OC4Jなど、JSP 1.2環境では、他の手段もあります。詳細は、『Oracle Application Server Containers for J2EE JavaServer Pages開発者ガイド』を参照してください。 


  3. Strutsサーブレットおよびタグ・ライブラリ・エントリをweb.xmlファイルに追加します。

    1. Strutsコントローラのサーブレット定義要素を追加します。(オプションで、アプリケーション全体で使用するMessageResourceファイル、Struts構成ファイルの名前と位置、およびデバッグ・レベルなどの追加プロパティも指定できます。)<servlet>要素は、トップレベルの<web-app>要素のサブ要素です。

      <servlet>
        <servlet-name>action</servlet-name>
        <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
        <init-param>
          <param-name>application</param-name>
          <param-value>ApplicationResources</param-value>
        </init-param>
        <init-param>
          <param-name>config</param-name>
          <param-value>/WEB-INF/struts-config.xml</param-value>
        </init-param>
      </servlet>
      
      
    2. Strutsコントローラ・サーブレットのサーブレット・マッピング要素を追加します。この手順では、サーブレット名(前述の<servlet>要素でサーブレット・クラスにマップ済)をURLサーブレット・パスにマップします。<servlet-mapping>要素は、トップレベルの<web-app>要素のサブ要素です。

      <servlet-mapping>
        <servlet-name>action</servlet-name>
        <url-pattern>*.do</url-pattern>
      </servlet-mapping>
      
      
    3. Strutsタグ・ライブラリのエントリを追加します。これらのエントリは、手順2で示したように、TLDファイルが/WEB-INFディレクトリに置かれていることを前提としています。<taglib>要素は、トップレベルの<web-app>要素のサブ要素です。

      <taglib>
        <taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
        <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
      </taglib>
      
      <taglib>
        <taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
        <taglib-location>/WEB-INF/struts-html.tld</taglib-location>
      </taglib>
      
      <taglib>
        <taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
        <taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
      </taglib>
      
      

これで、Webアプリケーションが、Strutsフレームワークを活用するアプリケーションのデプロイをサポートできます。

JSPページ、サーブレット、Strutsコンポーネントおよびその他のファイルを含めたWebアプリケーションの残りの部分をWARファイルに追加すると、アプリケーションをOC4Jにデプロイできます。


注意

アプリケーション内でStrutsを使用するには、追加手順が必要です。Strutsが実行時に使用するActionクラスおよびその他のコンポーネントを作成し、Struts構成ファイルstruts-config.xmlに対応するエントリを作成する必要があります。これらの点はOC4J固有のものではないため、このマニュアルの対象外です。詳細は、StrutsのWebサイトのLearning Guideを参照してください。

http://struts.apache.org/learning.html
 

OC4JにおけるJakarta log4jの構成および使用

次の各項で、Jakarta log4jをOC4Jスタンドアロン環境で使用するための考慮事項について説明します。

Jakarta log4jの概要

log4jフレームワークは、Javaアプリケーションの実行時ロギング処理をサポートするための効率的で柔軟なAPIを提供するオープン・ソース・プロジェクトです。log4jを使用することにより、様々なレベルの警告でメッセージを取り込み、ログ文をコードに挿入することが可能になります。また、システム管理者は、提供されたアプリケーション・コードを変更することなく、アプリケーションの実行時に表示するロギングのレベルを個別に定義できます。

log4jの機能を使用すると、アプリケーションのバイナリ・ファイルを変更せずに、実行時にロギングを行うことが可能です。パフォーマンスを著しく低下せずに、文を出荷時のコードに残しておくことができます。ロギングは構成ファイルによって制御されるため、アプリケーションのバイナリを変更する必要がありません。

次の各項で、log4jライブラリをインストールし、OC4Jで使用するために構成する方法を説明します。幅広いOC4J APIの使用方法はOC4J固有ではないため、このマニュアルでは説明しません。公式のlog4jのWebサイトにあるドキュメントを参照してください。次のサイトから入手可能です。

http://jakarta.apache.org/log4j/docs/index.html

http://jakarta.apache.org/log4j/docs/documentation.html


注意

log4jフレームワークは、Apache Jakartaプロジェクトの一部で、Apache Software Foundationによって運営されています。 


log4jバイナリ配布版のダウンロード

log4j配布版は、次のサイトから入手可能です。

http://jakarta.apache.org/log4j/docs/download.html

アーカイブ・ファイルをこのサイトからダウンロードします。プラットフォームに合ったフォーマット(ZIPファイルまたは圧縮済のTARファイル)を選択し、ローカル・ファイル・システムに保存します。


注意

次の項では、log4j 1.2.8バージョンを使用する手順を示していますが、それ以降のバージョンのlog4jでも同じ一般的な手順を使用してOC4Jにデプロイできます。 


log4jバイナリ配布版の解凍

WinZipまたはTARなど、プラットフォームに合ったツールを使用して、ダウンロードしたlog4jアーカイブ・ファイルを解凍します。これにより、次のディレクトリ構造が作成および移入されます。

jakarta-log4j-1.2.8/
   build/
   contrib/
      ...
   dist/
      classes/
         ...
      lib/
   docs/
      ...
   examples/
      ...
   src/
      ...

(一部のディレクトリ構造は示されていません。これ以外にもサブディレクトリがあります。)

log4jライブラリのインストール

J2EEアプリケーションでlog4jの機能を使用するには、log4jライブラリがOC4Jのクラスローダーによって使用できる必要があります。処理要件により、いくつかの方法があります。たとえば、log4jライブラリをシステムまたはグローバル・アプリケーション・レベルでインストールすることにより、コンテナにデプロイされたすべてのアプリケーションで使用できるようにすることが可能です。また、log4jライブラリを、特定のアプリケーションのライブラリとしてパッケージ化することも可能です。アプローチにより、構成ファイルの自動ロードの方法など、異なる処理特性が見られます。使用できるアプローチとその利点や弱点に関する詳細は、log4jのWebサイトおよびユーザー・メーリング・リストを参照してください。

次の各項で、log4jをOC4Jで使用するための3種類の方法を説明します。

log4jライブラリのグローバル・アプリケーション・レベルでの使用

log4jライブラリをOC4Jのグローバル・アプリケーション・レベルでインストールするには、log4jのlibディレクトリのlog4j JARファイル(log4j-1.2.8.jarなど)をj2ee/home/applibディレクトリにコピーします。デフォルトでは、j2ee/home/config/application.xmlグローバル・アプリケーション・ディスクリプタの<library>要素によって、OC4Jインスタンスにデプロイされるすべてのアプリケーションが共有するライブラリで、このディレクトリを使用できるようになります。OC4Jは、実行時にapplibディレクトリ内のすべてのライブラリを自動的にロードします。次に、UNIX環境(アーカイブ・ファイルを解凍したディレクトリから)の例を示します。「%」はシステム・プロンプトです。

% cp jakarta-log4j-1.2.8/dist/lib/log4j-1.2.8.jar j2ee/home/applib


注意

  • この方法を使用すると、オーバーヘッドが発生します。log4jライブラリを常時ロードしない場合は、applibディレクトリを使用しないでください。

  • Oracle Application Server環境では、log4jにapplibディレクトリを使用しないでください。Oracle Enterprise Manager 10gもlog4jを使用するため、コピーをグローバル・アプリケーション・レベルに置くと、Enterprise Managerとバージョンの競合が発生するおそれがあります。

 

Webアプリケーション・ライブラリとしてのlog4jライブラリのパッケージ化

log4jライブラリを特定のWebアプリケーション用にパッケージ化するには、log4jのlibディレクトリのlog4j JARファイル(log4j-1.2.8.jarなど)をWebアプリケーションの/WEB-INF/libディレクトリにコピーします。Webアプリケーションのクラスローダーにより、実行時にサーブレット・コンテナがWebアプリケーションでlog4jライブラリを使用できるようにします。次に、UNIX環境(アーカイブ・ファイルを解凍したディレクトリから)の例を示します。「%」はシステム・プロンプトです。

% cp jakarta-log4j-1.2.8/dist/lib/log4j-1.2.8.jar web-inf/lib

EJBおよびWebアプリケーションの共有ライブラリとしてのlog4jライブラリのパッケージ化

EJBコンポーネントおよびWebコンポーネントによって構成され、すべてがlog4jを使用するアプリケーションが存在する場合、両方のコンポーネント・セットが使用できる1つの共有ライブラリとしてlog4jライブラリをパッケージ化できます。

J2EEのクラスロード・メカニズムでは、EJBアプリケーションと同じEARファイル内にデプロイされているWebアプリケーションは、EJBクラスローダーで使用可能なクラスにアクセスできます。log4jをEJBアプリケーションのライブラリにすると、Webアプリケーションのライブラリにもなります。

EJBクラスローダーおよびWebクラスローダーは、EARファイルのMETA-INF/Manifest.mfファイルのClass-Path属性で指定されているすべてのライブラリにアクセスできます。ライブラリのJARファイルは、Class-Pathエントリを持つファイル(EARファイルなど)に対して相対的にロードされるため、そのファイルと同じディレクトリに格納されます。この機能を使用することにより、log4jのJARファイルをEJBのJARファイルと同じディレクトリ内に置き、マニフェスト・ファイルで必須ライブラリとして参照することが可能です。また、同じEARファイル内のWebアプリケーションからもEJBコンポーネントのクラスを認識できるため、これらのWebアプリケーションからもlog4jライブラリにアクセスできるようになります。

図A-1に、J2EEアプリケーションのクラスロード階層を示します。

図A-1    J2EEのクラスロード階層


画像の説明

log4j構成ファイルの使用

log4jフレームワークを使用すると、外部構成ファイルで指定された設定によってロギング動作を制御し、アプリケーション・コードを変更せずにロギング動作に変更を加えることができます。

外部構成ファイルを使用する方法は、主に3種類あります。各アプローチにより、構成ファイルの名付け方、および実行時にJ2EEアプリケーション・サーバーによってどのように検索されるかが異なります。

次の各項で、これら3種類の方法を説明します。

デフォルト・ファイルを使用した自動log4j構成

デフォルトで、log4jはロギング動作の決定に、log4j.propertiesまたはlog4j.xmlという名前の構成ファイルを使用します。log4jは、実行時に使用可能なクラスローダーから、これらのファイルを自動的にロードします。両方のファイルが検出された場合、log4j.xmlが優先されます。

自動構成ファイルを使用するには、OC4Jが使用するCLASSPATHに含まれるディレクトリ内に入れます。次に、これに含まれるものを、ロードの優先順位によって示します。

  1. グローバル・アプリケーション・レベル: j2ee/home/applib

  2. Webアプリケーション・レベル: /WEB-INF/classes


    注意

    log4jランタイムは、org.apache.log4j.Loggerクラスが初めてコールされた際に、自動構成ファイルを使用して1回のみ構成されます。log4jライブラリをj2ee/home/applibディレクトリに置くことによってグローバル・アプリケーション・レベルでインストールした場合、すべてのログ・レベル、アペンダ、およびサーバー上で実行中のすべてのアプリケーションのlog4jプロパティの定義には、1つの自動構成ファイルのみを使用できます。log4jライブラリを各Webアプリケーション用に、各/WEB-INF/libディレクトリにインストールした場合、log4jログ出力は、Webアプリケーションごとに個別に初期化されます。これにより、各Webアプリケーションごとに、個別の自動log4j構成ファイルを使用できます。 


代替ファイルを使用した自動log4j構成

log4jの自動構成に、デフォルト・ファイル名を使用するかわりに代替ファイル名を使用できます。これには、次のように、OC4Jの起動時に追加実行時プロパティを指定します。「%」はシステム・プロンプトで、urlは使用する構成ファイルの位置を指定します。

% java -Dlog4j.configuration=url

log4j.configurationプロパティの指定値が絶対URLの場合、log4jはURLを直接ロードし、構成ファイルとして使用します。

指定値が絶対URLでない場合、log4jは使用可能なクラスローダーからロードする構成ファイルの名前として指定値を使用します。

たとえば、OC4Jを次のように起動したとします(折り返された1行のコマンドラインであるとします)。

% java -Dlog4j.debug=true -Dlog4j.configuration=file:///d:¥temp¥foobar.xml
       -jar oc4j.jar

この場合、log4jはファイルd:¥temp¥foobar.xmlを構成ファイルとしてロードします。

別の例として、OC4Jを次のように起動したとします。

% java -Dlog4j.debug=true -Dlog4j.configuration=foobar.xml -jar oc4j.jar

この場合、log4jは使用可能なクラスローダーからfoobar.xmlをロードします。これは、デフォルトの自動構成ファイルlog4j.xmlを使用する場合と同じ仕組みですが、かわりに指定されたファイル名を使用します。


注意

この方法は、より柔軟性がありますが、すべてのデプロイされたアプリケーションの外部構成ファイルが同じ名前である必要があります。 


外部構成ファイルをプログラム的に指定

自動構成ファイルのローディング・メカニズムに依存するかわりに、一部のアプリケーションでは、外部構成ファイルのロードにプログラム的なアプローチを使用します。この場合、構成ファイルのパスは、アプリケーション・コード内で直接提供されます。これにより、アプリケーションごとに異なるファイル名を使用できます。log4jユーティリティはロギング動作を決定するために、指定された構成ファイル(XML文書またはプロパティ・ファイル)をロードおよび解析します。

次に例を示します。

public void init(ServletContext context) throws ServletException
{
  // Load the barfoo.xml file as the log4j external configuration file.
  DOMConfigurator("barfoo.xml");
  logger = Logger.getLogger(Log4JExample.class);
}

この場合、log4jはOC4Jの起動ディレクトリからbarfoo.xmlをロードします。

プログラム的なアプローチを使用すると、開発者やシステム管理者は最大の柔軟性が得られます。構成ファイルには任意の名前を使用でき、任意の位置からロードできます。この場合でも、システム管理者は、アプリケーション・コードを変更せずに、外部構成ファイルによってロギング動作を変更できます。

さらに柔軟性を確保し、アプリケーションに特定の名前と位置をコードしない場合は、ファイル名と位置を標準web.xmlデプロイメント・ディスクリプタ内のパラメータとして提供すると便利です。サーブレットまたはJSPページは、構成ファイルの位置と名前を指定するパラメータ値を読み取り、構成ファイルのロード元の位置を動的に構成します。このプロセスにより、システム管理者は、使用する構成ファイルの名前と位置の両方を選択できます。

次に、構成ファイルの名前と位置を指定しているweb.xmlエントリの例を示します。

<context-param>
  <param-name>log4j-config-file</param-name>
  <param-value>/web-inf/classes/app2-log4j-config.xml</param-value>
</context-param>

アプリケーションは、デプロイメント・ディスクリプタから位置の値を読み取り、ローカル・ファイル・システム上でファイルへのフルパスを構成し、ファイルをロードします。次に、サンプル・コードを示します。

public void init(ServletContext context) throws ServletException
{
  /*
   * Read the path to the config file from the web.xml file,
   * should return something line /web-inf/xxx.xml or web-inf/classes/xxx.xml.
   */
  String configPath = context.getInitParameter("log4j-config-file");

  /*
   * This loads the file based on the base directory of the web application
   * as it is deployed on the application server.
   */
  String realPath = context.getRealPath(configPath);
   if(realPath!=null)
   DOMConfigurator.configure(realPath);
  _logger = Logger.getLogger(Log4JExample.class);
}


注意

動作を定義するファイルで、HTTPリクエストからクライアントがアクセスすべきでないものは、Webアプリケーションの/WEB-INFディレクトリに置くことをお薦めします。(/WEB-INFのサブディレクトリは使用しないでください。)たとえば、log4j.xmlがこれに該当します。サーブレット仕様では、/WEB-INFディレクトリの内部はクライアントからアクセス不可である必要があります。 


log4jデバッグ・モードの使用可能化

log4jおよび外部構成ファイルを使用するアプリケーションをOC4Jにデプロイする際、log4jがリクエストされた構成ファイルを検索およびロードする方法を表示すると便利な場合があります。これを行うため、log4jではデバッグ・モードが用意されています。デバッグ・モードを使用すると、構成ファイルのロード方法が表示されます。

log4jのデバッグ・モードをオンにするには、次のようにして、OC4Jの起動時に追加実行時プロパティを指定します(「%」はシステム・プロンプトです)。

% java -Dlog4j.debug=true -jar oc4j.jar

OC4Jにより、次のような出力が表示されます。

Oracle Application Server (10.1.2.0.0) Containers for J2EE initialized
log4j: Trying to find [log4j.xml] using context classloader [ClassLoader:
[[D:¥myprojects¥java¥log4j¥app1¥webapp1¥WEB-INF¥classes],
[D:¥myprojects¥java¥log4j¥app1¥webapp1¥WEB-INF¥lib/log4j-1.2.7.jar]]].
log4j: Using URL [file:/D:/myprojects/java/log4j/app1/webapp1/WEB-INF/classes/
log4j.xml] for automatic log4j configuration.
log4j: Preferred configurator class: org.apache.log4j.xml.DOMConfigurator
log4j: System property is :null
log4j: Standard DocumentBuilderFactory search succeded.
log4j: DocumentBuilderFactory is: oracle.xml.jaxp.JXDocumentBuilderFactory
log4j: URL to log4j.dtd is [classloader:/org/apache/log4j/xml/log4j.dtd].
log4j: debug attribute= "null".
log4j: Ignoring debug attribute.
log4j: Threshold ="null".
log4j: Level value for root is  [debug].
log4j: root level set to DEBUG
log4j: Class name: [org.apache.log4j.FileAppender]
log4j: Setting property [file] to [d:/temp/webapp1.out].
log4j: Setting property [append] to [false].
log4j: Parsing layout of class: "org.apache.log4j.PatternLayout"
log4j: Setting property [conversionPattern] to [%n%-5p %d{DD/MM/yyyy}
d{HH:mm:ss} [%-10c] [%r]%m%n].
log4j: setFile called: d:/temp/webapp1.out, false
log4j: setFile ended
log4j: Adding appender named [FileAppender] to category [root].


注意

外部構成ファイルでlog4j:configurationタグのdebug属性を使用して、デバッグ出力を使用することも可能です。ただしこの場合は、実行されたロード処理は表示されないため、構成ファイルのロード時の問題解決には不向きです。 



戻る 次へ
Oracle
Copyright © 2002, 2005 Oracle Corporation.

All Rights Reserved.
目次
目次
索引
索引