ORACLE JAPAN Server Release 6.1

 

  |  

  WebLogic Server ホーム   |     Web アプリケーション   |   前へ   |   次へ   |   目次   |   索引   |   PDF 版

Web アプリケーション コンポーネントのコンフィグレーション

 

次の節では、Web アプリケーションをコンフィグレーションする方法について説明します。

 


サーブレットのコンフィグレーション

サーブレットは、Web アプリケーションの一部として登録およびコンフィグレーションされます。サーブレットを登録するには、Web アプリケーション デプロイメント記述子にいくつかのエントリを追加します。<servlet> 要素の下の最初のエントリには、サーブレットの名前が定義され、そのサーブレットを実行するコンパイル済みクラスが指定されます(あるいは、サーブレット クラスを指定する代わりに、JSP ページを指定することもできます)。この要素には、サーブレットの初期化パラメータとセキュリティ ロール用の定義も含まれています。<servlet-mapping> 要素の下の 2 番目のエントリには、このサーブレットを呼び出す URL パターンが定義されています。

Web アプリケーション デプロイメント記述子 の詳しい編集手順については、以下のトピックを参照してください。

サーブレット マッピング

サーブレット マッピングとは、サーブレットへのアクセス方法を制御することです。次の例は、Web アプリケーションでサーブレット マッピングを使用する方法を示しています。この例には、(web.xml デプロイメント記述子の)サーブレット コンフィグレーションとマッピングがあり、その後にこれらのサーブレットの起動に使う URL を示す表( url-pattern と呼び出されるサーブレットを参照)があります。

コード リスト 3-1 サーブレット マッピングの例

<servlet>
<servlet-name>watermelon</servlet-name>
<servlet-class>myservlets.watermelon</servlet-class>
</servlet>

<servlet>
<servlet-name>garden</servlet-name>
<servlet-class>myservlets.garden</servlet-class>
</servlet>

<servlet>
<servlet-name>list</servlet-name>
<servlet-class>myservlets.list</servlet-class>
</servlet>

<servlet>
<servlet-name>kiwi</servlet-name>
<servlet-class>myservlets.kiwi</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>watermelon</servlet-name>
<url-pattern>/fruit/summer/*</url-pattern>
</servlet-mapping>

<servlet-mapping>
<servlet-name>garden</servlet-name>
<url-pattern>/seeds/*</url-pattern>
</servlet-mapping>

<servlet-mapping>
<servlet-name>list</servlet-name>
<url-pattern>/seedlist</url-pattern>
</servlet-mapping>

<servlet-mapping>
<servlet-name>kiwi</servlet-name>
<url-pattern>*.abc</url-pattern>
</servlet-mapping>

表3-1 url-pattern と呼び出されるサーブレット

URL

呼び出される
サーブレット

http://host:port/mywebapp/fruit/summer/index.html

watermelon

http://host:port/mywebapp/fruit/summer/index.abc

watermelon

http://host:port/mywebapp/seedlist

list

http://host:port/mywebapp/seedlist/index.html

デフォルト サーバ(コンフィグレーションされている場合)、または HTTP 404 エラー メッセージ(「File not found」)。

list サーブレットが /seedlist* にマップされていた場合、list サーブレットが呼び出される。

http://host:port/mywebapp/seedlist/pear.abc

kiwi

list サーブレットが /seedlist* にマップされていた場合、list サーブレットが呼び出される。

http://host:port/mywebapp/seeds

garden

http://host:port/mywebapp/seeds/index.html

garden

http://host:port/mywebapp/index.abc

kiwi


 

サーブレット初期化パラメータ

サーブレットの初期化パラメータは、Web アプリケーション デプロイメント記述子の中の <servlet> 要素の <init-param> 要素に、<param-name> タグと <param-value> タグを使って定義します。次に例を示します。

コード リスト 3-2 サーブレット初期化パラメータのコンフィグレーション例

<servlet>
<servlet-name>HelloWorld2</servlet-name>
<servlet-class>examples.servlets.HelloWorld2</servlet-class>

<init-param>
<param-name>greeting</param-name>
<param-value>Welcome</param-value>
</init-param>

<init-param>
<param-name>person</param-name>
<param-value>WebLogic Developer</param-value>
</init-param>
</servlet>

Web アプリケーション デプロイメント記述子の編集の詳細については、 Web アプリケーションのデプロイメント記述子の記述を参照してください。

 


JSP のコンフィグレーション

JavaServer Pages(JSP)ファイルは、Web アプリケーションのルート(またはルートの下のサブディレクトリ)に格納することでデプロイされます。追加の JSP コンフィグレーション パラメータは WebLogic 固有のデプロイメント記述子である weblogic.xml<jsp-descriptor> 要素に定義されます。これらのパラメータは次の機能を定義します。

これらのパラメータの詳細については、 JSP パラメータの名前と値を参照してください。

weblogic.xml ファイルの編集手順については、 weblogic.xml ファイル作成の主な手順を参照してください。

<servlet> タグを使うと JSP をサーブレットとして登録することもできます。次の例で、/main を含む URL は myJSPfile.jsp を起動します。

<servlet>
<servlet-name>myFoo</servlet-name>
<jsp-file>myJSPfile.jsp</jsp-file>
</servlet>

<servlet-mapping>
<servlet-name>myFoo</servlet-name>
<url-pattern>/main</url-pattern>
</servlet-mapping>

この方法で JSP を登録することによって、サーブレットに対して行うのと同様に、ロード順、初期化パラメータ、およびセキュリティ ロールを JSP に指定できます。

 


JSP タグ ライブラリのコンフィグレーション

Weblogic Server には、カスタム JSP タグを作成し、使用する機能が用意されています。カスタム JSP タグは、JSP ページから呼び出すことができる Java クラスです。カスタム JSP タグを作成するには、それらをタグ ライブラリに登録して、それらの動作をタグ ライブラリ記述子(TLD)ファイルに定義します。この TLD は、JSP が組み込まれている Web アプリケーションで使用できなければなりません。そのためには、Web アプリケーション デプロイメント記述子にその TLD を定義します。TLD ファイルは、Web アプリケーションの WEB-INF ディレクトリに格納してください。このディレクトリは、外部には公開されません。

Web アプリケーション デプロイメント記述子には、タグ ライブラリの URI パターンを定義します。この URI パターンは、JSP ページの taglib ディレクティブの値と一致する必要があります。また、TLD の格納場所も定義します。たとえば、JSP ページに次の taglib ディレクティブがあるとします。

<%@ taglib uri="myTaglib" prefix="taglib" %>

また、TLD が Web アプリケーションの WEB-INF ディレクトリに格納されているとします。この場合、Web アプリケーション デプロイメント記述子に次のエントリを作成します。

<taglib>
<taglib-uri>myTaglib</taglib-uri>
<tablig-location>WEB-INF/myTLD.tld</taglib-location>
</taglib>

タグ ライブラリは、.jar ファイルとしてデプロイできます。詳細については、「JSP タグ ライブラリを JAR ファイルとしてデプロイする」を参照してください。

カスタム JSP タグ ライブラリの作成の詳細については、『JSP Tag Extensions プログラマーズ ガイド』を参照してください。

WebLogic Server には、アプリケーションで使用できるカスタム JSP タグがいくつか付属しています。これらのタグを使用すると、キャッシング、クエリ パラメータベースのフロー制御の効率化、およびオブジェクト セットに対する反復処理の効率化を行うことができます。詳細については、以下を参照してください。

 


ウェルカム ページのコンフィグレーション

WebLogic Server では、要求された URL がディレクトリである場合にデフォルトによって提供されるページを設定できます。ユーザが特定のファイル名を指定せずに URL を入力できるので、このウェルカム ページの機能でサイトが使いやすくなります。

ウェルカム ページは、Web アプリケーション レベルで定義します。サーバが複数の Web アプリケーションのホストになっている場合は、Web アプリケーションごとに別個のウェルカム ページを定義する必要があります。

ウェルカム ページを定義するには、Web アプリケーション デプロイメント記述子の web.xml を編集します。詳細については、 手順 13 : ウェルカム ページの定義を参照してください。

ウェルカム ページを定義していない場合、WebLogic Server は以下のファイルを次の順序で検索し、最初に見つけたものにサービスを提供します。

  1. index.html

  2. index.htm

  3. index.jsp

詳細については、「WebLogic Server による HTTP リクエストの解決方法」を参照してください。

 


デフォルト サーブレットの設定

各 Web アプリケーションには、デフォルト サーブレットがあります。このデフォルト サーブレットは管理者が指定できますが、指定しない場合、WebLogic Server では FileServlet という内部サーブレットがデフォルト サーブレットとして使用されます。FileServlet の詳細については、「WebLogic Server による HTTP リクエストの解決方法」を参照してください。

どのサーブレットでも、デフォルト サーブレットとして登録できます。独自のデフォルト サーブレットを作成すれば、独自のロジックを使用して、デフォルト サーブレットに送られるリクエストの処理方法を定義できます。

設定したデフォルト サーブレットは、FileServlet に取って代わります。FileServlet はほとんどのファイル(テキスト ファイル、HTML ファイル、イメージ ファイルなど)を提供するために使用されるので、デフォルト サーブレットの設定は注意深く行う必要があります。デフォルト サーブレットでこれらのファイルを提供するには、その機能をデフォルト サーブレットに記述する必要があります。

ユーザ定義のデフォルト サーブレットを設定するには、次の手順を実行します。

  1. 3-1 ページの「サーブレットのコンフィグレーション」の説明に従って、サーブレットを定義します。

  2. デフォルト サーブレットを、「/」という url パターンを使ってマップします。これにより、デフォルト サーブレットは、拡張子が *.htm または *.html のファイルを除くすべてのファイルに応答します。

    デフォルト サーバが *.htm または *.html ファイルに応答するようにするには、これらの拡張子をデフォルト サーブレットにマップし、さらに「/」をマップします。サーブレットのマップの手順については、 3-1 ページの「サーブレットのコンフィグレーション」を参照してください。

  3. FileServlet を他の拡張子付きのファイルに提供する場合は、次の手順に従います。

    1. サーブレットを定義し、myFileServlet などの <servlet-name> を指定します。

    2. <servlet-class>weblogic.servlet.FileServlet と定義します。

    3. <servlet-mapping> 要素を使ってファイル拡張子を myFileServlet にマップします(デフォルト サーブレット用のマッピングに追加して)。たとえば、myFileServletgif ファイルを提供するには、*.gifmyFileServlet にマップします。

 


HTTP エラー応答のカスタマイズ

WebLogic Server をコンフィグレーションすると、特定の HTTP エラーまたは Java 例外が発生したときに、標準の WebLogic Server エラー応答ページを使う代わりに、カスタム Web ページなどの HTTP リソースを使って応答させることができます。

カスタム エラー ページは、Web アプリケーション デプロイメント記述子(web.xml)の <error-page> 要素に定義します。詳細については、 error-page 要素を参照してください。

 


WebLogic Server での CGI の使用

WebLogic Server には、レガシー CGI(Common Gateway Interface)スクリプトのサポート機能が用意されています。しかし、新しいプロジェクトでは、HTTP サーブレットまたは JavaServer Pages を使用することをお勧めします。

WebLogic Server は、CGIServlet という内部 WebLogic サーブレットを介してすべての CGI スクリプトをサポートします。CGI を使用するには、この CGIServlet を Web アプリケーション デプロイメント記述子に登録します( CGIServlet の登録に使用する Web アプリケーション デプロイメント記述子エントリのサンプルを参照)。詳細については、 サーブレットのコンフィグレーションを参照してください。

CGI を使用するための WebLogic Server のコンフィグレーション

WebLogic Server で CGI をコンフィグレーションするには、次の手順に従います。

  1. <servlet> 要素および <servlet-mapping> 要素を使用して、Web アプリケーションで CGIServlet を宣言します。CGIServlet のクラス名は、weblogic.servlet.CGIServlet です。このクラスを Web アプリケーションにパッケージ化する必要はありません。

  2. 以下の <init-param> 要素を定義して、CGIServlet の初期化パラメータを登録します。

    cgiDir

    CGI スクリプトが存在するディレクトリのパス。複数のディレクトリを指定するには、セミコロン「;」 (Windows) またはコロン「:」 (UNIX) で区切ります。CGI ディレクトリをアプリケーション ルートを基準にして指定する場合、または CGI ディレクトリが WAR ファイルの内部に存在する場合は、cgiDir を指定します。cgiDir については、以下の点に注意してください。

    WebLogic Server が CGI スクリプトを取り出すことができるよう、CGI スクリプトが存在するすべてのディレクトリを個別に指定する必要があります。

    CGIServlet は、cgiDir で指定されているパスのサブディレクトリからは、CGI を取り出しません。

    取り出された CGI スクリプトはすべて同じディレクトリに格納され、CGI スクリプトの検索にはスクリプト名だけが使用されて完全パスや相対パスは使用されないので、サブディレクトリの場所に関係なく、CGI スクリプトの名前はすべてユニークにする必要があります。

    たとえば、/foo/myscript.pl と /bar/myscript.pl は混同され、どちらが呼び出されるかわかりません。

    extension mapping

    スクリプトを実行するインタープリタまたは実行可能ファイルにファイル拡張子をマップします。スクリプトが実行可能ファイルを必要としない場合、この初期化パラメータは省略可能です。

    拡張子マッピング用の <param-name> は、*.pl のように、アスタリスク、ドット、ファイル拡張子の順で指定する必要があります。

    <param-value> には、スクリプトを実行するインタープリタまたは実行可能ファイルへのパスが含まれます。マッピングごとに個別の <init-param> 要素を作成すると、複数のマッピングを作成できます。

    コード リスト 3-3 CGIServlet の登録に使用する Web アプリケーション デプロイメント記述子エントリのサンプル

    <servlet>
    <servlet-name>CGIServlet</servlet-name>
    <servlet-class>weblogic.servlet.CGIServlet</servlet-class>
    <init-param>
    <param-name>cgiDir</param-name>
    <param-value>
    /bea/wlserver6.0/config/mydomain/applications/myWebApp/cgi-bin
    </param-value>
    </init-param>

    <init-param>
    <param-name>*.pl</param-name>
    <param-value>/bin/perl.exe</param-value>
    </init-param>
    </servlet>

    ...

    <servlet-mapping>
    <servlet-name>CGIServlet</servlet-name>
    <url-pattern>/cgi-bin/*</url-pattern>
    </servlet-mapping>

CGI スクリプトの要求

perl スクリプトを要求するために使用する URL は、次のパターンに従う必要があります。

http://host:port/myWebApp/cgi-bin/myscript.pl

各要素の説明は次のとおりです。

host:port

WebLogic Server のホスト名とポート番号

myWebApp

Web アプリケーションの名前

cgi-bin

CGIServlet にマップされる url-pattern

myscript.pl

cgiDir 初期化パラメータで指定したディレクトリに存在する Perl スクリプトの名前

 


ClasspathServlet による CLASSPATH からのリソースの提供

システム CLASSPATH から、または Web アプリケーションの WEB-INF/classes ディレクトリからクラスまたは他のリソースを提供する必要がある場合、ClasspathServlet と呼ばれる特殊なサーブレットを使用できます。ClasspathServlet はアプレットまたは RMI クライアントを使用し、サーバサイド クラスへのアクセスを必要とするアプリケーションで役に立ちます。ClasspathServlet は暗黙的に登録され、任意のアプリケーションから利用できます。

ClasspathServlet を呼び出す一般的な形式は、次のとおりです。

http://server:port[/<context-path>]/classes[/<app>@[<webapp.]]/<package>.<classname>>.class

各要素の内容は以下のとおりです。

context-path

ClasspathServlet を呼び出す対象のアプリケーションを指定します。

app

提供するクラス(またはクラスを含む Web アプリケーション)を含むアプリケーションの名前です。

webapp

クラスを含む Web アプリケーションの名前です。

ClasspathServlet を使用するには次の 2 つの方法があります。

警告: ClasspathServlet はシステム CLASSPATH にあるすべてのリソースを提供するので、システム CLASSPATH には公開できないリソースは置かないでください。

 


Web アプリケーションでの外部リソースのコンフィグレーション

Web アプリケーションから JNDI を介して DataSource などの外部リソースにアクセスする場合、コード内でルックアップする JNDI 名を、JNDI ツリーにバインドされているとおりの実際の JNDI 名にマップできます。このマッピングを行うには、web.xmlweblogic.xml の両方のデプロイメント記述子を使用します。このマッピングにより、アプリケーション コードを変更せずにこれらのリソースを変更できるようになります。デプロイメント記述子には、Java コードで使用される名前、JNDI ツリーにバインドされているとおりのリソースの名前、リソースの Java タイプを指定します。また、リソースのセキュリティをサーブレットによってプログラマティックに処理するか、または HTTP リクエストに関連付けられる資格に基づいて処理するかを指定します。

外部リソースをコンフィグレーションするには、次の手順に従います。

  1. コードで使用するリソース名、Java タイプ、およびセキュリティ認証タイプをデプロイメント記述子に入力します。デプロイメント記述子エントリの作成手順については、 手順 16 : 外部リソースの参照を参照してください。

  2. リソース名を JNDI 名にマップします。デプロイメント記述子エントリの作成手順については、 手順 3 : リソースの JNDI へのマッピングを参照してください。

この例は、accountDataSource というデータ ソースが定義されていることを前提としています。詳細については、「JDBC データ ソース」を参照してください。

コード リスト 3-4 DataSource の使用例

Servlet code:
javax.sql.DataSource ds = (javax.sql.DataSource) ctx.lookup
("
myDataSource");

web.xml のエントリ :

<resource-ref>
. . .
<res-ref-name>
myDataSource</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>CONTAINER</res-auth>
. . .
</resource-ref>

weblogic.xml エントリ

<resource-description>
<res-ref-name>
myDataSource</res-ref-name>
<jndi-name>accountDataSource</jndi-name>
</resource-description>

 


Web アプリケーションでの EJB の参照

weblogic-ejb-jar.xml ファイル デプロイメント記述子に定義される EJB の JNDI 名にマップされる名前を Web アプリケーション デプロイメント記述子に指定すると、Web アプリケーションで EJB を参照できます。この手順は、Web アプリケーションと EJB との間接レベルを提供しており、サード パーティの EJB や Web アプリケーションを使用していて、EJB を直接呼び出すコードを変更できない場合に便利です。ほとんどの場合、この間接機能を使用しなくても EJB は直接呼び出すことができます。詳細については、「デプロイされた EJB の呼び出し」を参照してください。

Web アプリケーションで使用するために EJB を参照するには、次の手順に従います。

  1. コード内で EJB をルックアップするために使用する EJB 参照名、Java クラス名、EJB のホームおよびリモート インタフェース名を、Web アプリケーション デプロイメント記述子の <ejb-ref> 要素に入力します。デプロイメント記述子エントリの作成手順については、 手順 21 : エンタープライズ JavaBean(EJB)リソースの参照を参照してください。

  2. WebLogic 固有のデプロイメント記述子である weblogic.xml<ejb-reference-description> 要素にある参照名を weblogic-ejb-jar.xml ファイルに定義された JNDI 名にマップします。デプロイメント記述子エントリの作成手順については、 手順 3 : リソースの JNDI へのマッピングを参照してください。

    Web アプリケーションがエンタープライズ アプリケーション アーカイブ(.ear ファイル)の一部である場合、.ear<ejb-link> 要素で使用されている名前によって EJB を参照できます。

 


HTTP リクエストのエンコーディングの識別

WebLogic Server は、HTTP リクエストに含まれている文字データを、そのネイティブのエンコーディングから Java サーブレット API が使用する Unicode エンコーディングに変換する必要があります。この変換を実行するために、WebLogic Server は、リクエストのエンコーディングでどのコードセットが使われたのかを知る必要があります。

コードセットを定義する方法は 2 種類あります。

 


IANA 文字セットの Java 文字セットへのマッピング

文字セットを記述するために Internet Assigned Numbers Authority(IANA)によって割り当てられる名前は、Java で使用される名前とは異なることがあります。すべての HTTP 通信が IANA 文字セット名を使用し、これらの名前は常に同じとは限らないので、WebLogic Server は IANA 文字セット名を Java 文字セット名に内部でマップし、通常は正しいマッピングを判断できます。ただし、IANA 文字セットを Java 文字セットの名前に明示的にマッピングすると、あいまいさを解決することができます。

IANA 文字セットを Java 文字セットにマップするために、文字セットは WebLogic 固有のデプロイメント記述子である weblogic.xml<charset-mapping> 要素で名前を付けられます。<iana-charset-name> 要素に IANA 文字セット名を定義し、<java-charset-name> 要素に Java 文字セット名を定義します。次に例を示します。

<charset-mapping>
<iana-charset-name>Shift-JIS</iana-charset-name>
<java-charset-name>SJIS</java-charset-name>
</charset-mapping>

 

back to top previous page next page