BEA ホーム | 製品 | dev2dev | support | askBEA |
|
e-docs > WebLogic Server > Web アプリケーションのアセンブルとコンフィグレーション > Web アプリケーションのデプロイメント記述子の記述 |
Web アプリケーションのアセンブルとコンフィグレーション |
この章では、Web アプリケーション デプロイメント記述子を作成する方法について説明します。
WebLogic Server は、Web アプリケーションを定義するために標準 J2EE web.xml デプロイメント記述子を使用します。WebLogic 固有のデプロイメント記述子である weblogic.xml を合わせて必要とするアプリケーションもあります。これらのデプロイメント記述子を使用して、Web アプリケーション用のコンポーネントと操作パラメータを定義します。デプロイメント記述子は、XML の表記法でフォーマットされた標準テキスト ファイルです。これらのファイルは、Web アプリケーションにパッケージ化します。Web アプリケーションの詳細については、Web アプリケーションの基本事項を参照してください。
デプロイメント記述子 web.xml は、Sun Microsystems のサーブレット 2.3 仕様で定義されています。このデプロイメント記述子を使用して、J2EE 準拠のアプリケーション サーバに Web アプリケーションをデプロイできます。
デプロイメント記述子 weblogic.xml は、WebLogic Server 上で稼働する Web アプリケーションに固有のデプロイメント プロパティを定義します。weblogic.xml は、すべての Web アプリケーションで必要なわけではありません。
デプロイメント記述子の編集には、次のツールのいずれかを使用できます。
詳細については、「Web アプリケーションのパッケージ化」を参照してください。
この章では、web.xml デプロイメント記述子を作成する手順について説明します。Web アプリケーションのコンポーネントによっては、Web アプリケーションのコンフィグレーションとデプロイに、ここで示す要素のすべてが必要なわけではないことがあります。
web.xmlファイル内の要素は、このドキュメントで取り上げる順で入力しなければなりません。
WebLogic Server のサンプルおよび例をインストールした場合は、Pet Store サンプルの web.xml および weblogic.xml ファイルで、Web アプリケーションのデプロイメント記述子の実際の例を参照できます。これらのファイルは、WebLogic Server の配布ディレクトリ、/samples/PetStore/source/dd/war/WEB-INF にあります。
ファイル名を web.xml として、Web アプリケーションの WEB-INF ディレクトリに入れます。任意のテキスト エディタを使用します。
DOCTYPE 文は、デプロイメント記述子のドキュメント タイプ定義 (DTD) ファイルの場所とバージョンを指しています。このヘッダは外部 URL の java.sun.com を参照していますが、WebLogic Server には独自の DTD ファイルが用意されているので、ホスト サーバがインターネットにアクセスする必要はありません。ただし、この <!DOCTYPE...> 要素を web.xml ファイルに入れて、外部 URL を参照するようにしなければなりません。この要素内の DTD バージョンはこのデプロイメント記述子のバージョンを識別するためのものだからです。
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//
DTD WebApplication 2.2//EN"
"http://java.sun.com/j2ee/dtds/web-app_2.2.dtd">
<web-app> タグの開始タグと終了タグを 1 組にしてすべてのエントリを挟みます。
XML では、上記のように、プロパティ名または値を開始および終了タグで囲むことでプロパティを定義します。開始タグ、本文 (プロパティ名または値)、および終了タグは、ひとまとめにして要素と呼ばれます。一部の要素は開始タグと終了タグを組にしていませんが、空タグと呼ばれる属性を持つ 1 つのタグを使用します。このテキストでは、わかりやすいように、その他の要素に含まれる要素がインデントされています。XML ファイルではインデントしなくともかまいません。
<web-app> 要素自体の本文には、WebLogic Server 上で Web アプリケーションが動作する方法を決定する追加要素が入っています。ファイル内のタグ要素の順序は、このドキュメントに示されている順序に従っていなければなりません。この順序は、ドキュメント タイプ定義 (DTD) ファイルで定義されます。
これらのタグは、デプロイメント ツールまたはアプリケーション サーバのリソース管理ツールの情報を提供します。このリリースでは、これらの値は WebLogic Server で使用されません。
context-param 要素では、Web アプリケーションのサーブレット コンテキストの初期化パラメータを宣言します。これらのパラメータを定義して、Web アプリケーション全体で使用できるようにします。<param-name> 要素と <param-value> 要素を使用して、各 context-param を 1 つの context-param 要素内に設定します。コードでは、javax.servlet.ServletContext.getInitParameter() メソッドおよび javax.servlet.ServletContext.getInitParameterNames() メソッドを使用して、これらのパラメータにアクセスできます。
詳細については、context-paramを参照。 |
|
手順 6: フィルタのコンフィグレーション (サーブレット 2.3 仕様のみ)
それぞれのフィルタには名前とフィルタ クラスがあります。フィルタの詳細については、フィルタのコンフィグレーションを参照してください。フィルタにも初期化パラメータを使用できます。次の要素はフィルタを定義するものです。
詳細については、filterを参照。 |
|
<small-icon> |
|
手順 7: フィルタ マッピングの定義 (サーブレット 2.3 仕様のみ)
フィルタの宣言をした後で、各フィルタを URL パターンにマップします。
詳細については、filter-mappingを参照。 |
|
手順 8: アプリケーション リスナのコンフィグレーション (サーブレット 2.3 仕様のみ)
それぞれのリスナ クラスに対して、独立した <listener> 要素を使って、Web アプリケーション イベント リスナをコンフィグレーションします。
詳細については、アプリケーション イベントとリスナを参照してください。
詳細については、listenerを参照。 |
|
サーブレットをデプロイするには、サーブレットに名前を付けて、その動作を実装するためのクラス ファイルまたは JSP を指定し、その他のサーブレット固有のプロパティを設定します。Web アプリケーション内の各サーブレットを <servlet>...</servlet> 要素内にリストします。すべてのサーブレットのエントリを作成したら、サーブレットを URL パターンにマッピングする要素を含める必要があります。これらのマッピング要素については、手順 10: URL へのサーブレットのマッピングで説明しています。
詳細については、サーブレットのコンフィグレーションを参照してください。
詳細については、servletを参照。 |
|
<servlet-class> |
|
詳細については、init-paramを参照。 |
|
詳細については、security-role-refを参照。 |
|
<servlet>
...
<init-param>
<param-name>feedbackEmail</param-name>
<param-value>feedback123@beasys.com</param-value>
<description>
The email for web-site feedback.
</description>
</init-param>
...
</servlet>
<servlet> 要素を使用してサーブレットまたは JSP を宣言したら、それを 1 つまたは複数の URL パターンにマッピングして、パブリック HTTP リソースにします。URL パターンの用途は、Sun Microsystems のサーブレット 2.3 仕様で定義されています。マッピングごとに、<servlet-mapping> 要素を使用します。
詳細については、servlet-mappingを参照。 |
|
前述の <servlet> 宣言例の <servlet-mapping> の例を次に示します。
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
詳細については、session-configを参照。 |
|
MIME マッピングを作成するには、ファイル拡張子を MIME タイプにマップします。
詳細については、mime-mappingを参照。 |
|
詳細については、ウェルカム ページのコンフィグレーションを参照してください。
(ウェルカム ページは省略可能) |
|
ウェルカム ページのコンフィグレーションと、「WebLogic Server による HTTP リクエストの解決方法」も参照。 |
|
詳細については、HTTP エラー応答のカスタマイズを参照してください。
(省略可能) エラーに応答するためのカスタマイズされたページを定義する。 |
|
詳細については、JSP タグ ライブラリのコンフィグレーションを参照してください。
詳細については、taglibを参照。 |
|
JSP で使用する taglib ディレクティブの例を示します。
<%@ taglib uri="string_pattern" prefix="taglib" %>
詳細については、『JSP Tag Extensions プログラマーズ ガイド』を参照してください。
詳細については、Web アプリケーションのリソースのコンフィグレーションを参照してください。
(省略可能) |
|
<res-sharing-scope> |
|
セキュリティを用いる Web アプリケーションでは、ユーザは、リソースにアクセスするためにログインする必要があります。ユーザの資格はセキュリティ レルムに照らして検証され、認可されると、ユーザは Web アプリケーション内の指定されたリソースにのみアクセスできるようになります。
Web アプリケーションのセキュリティは、3 つの要素を使用してコンフィグレーションします。
詳細については、Web アプリケーション リソースへのアクセスの制限を参照してください。
(省略可能) 詳細については、security-constraintを参照。 |
|
(必須) 詳細については、web-resource-collectionを参照。 |
|
詳細については、auth-constraintを参照。 |
|
詳細については、user-data-constraintを参照。 |
|
詳細については、Web アプリケーション用の認証の設定を参照してください。
詳細については、login-configを参照。 |
|
詳細については、『WebLogic Security の管理』を参照。 |
|
詳細については、form-login-configを参照。 |
|
詳細については、Web アプリケーションでのセキュリティのコンフィグレーションを参照してください。
詳細については、security-roleを参照。 |
|
詳細については、Web アプリケーションのリソースのコンフィグレーションを参照してください。
詳細については、env-entryを参照。 |
|
手順 21: エンタープライズ JavaBean (EJB) リソースの参照
詳細については、Web アプリケーションでの EJB の参照を参照してください。
詳細については、ejb-refを参照。 |
|
コード リスト 8-1 サーブレット マッピング、ウェルカム ファイル、エラー ページのある web.xml のサンプル
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//
DTD Web Application 1.2//EN"
"http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
<web-app>
<!-- 次のサーブレット要素は、servletA と呼ばれるサーブレットを定義する。
このサーブレットの Java クラスは servlets.servletA>
<servlet>
<servlet-name>servletA</servlet-name>
<servlet-class>servlets.servletA</servlet-class>
</servlet>
<!-- 次のサーブレット要素は、servletB と呼ばれるサーブレットを定義する。
このサーブレットの Java クラスは servlets.servletB>
<servlet>
<servlet-name>servletB</servlet-name>
<servlet-class>servlets.servletB</servlet-class>
</servlet>
<!-- 次のサーブレットマッピングは、servletA と呼ばれるサーブレット
(サーブレット要素を参照) を「blue」の URL パターンにマップする。
この URL パターンは、このサーブレットを要求しているときに使用される。
例 : http://host:port/myWebApp/blue -->
<servlet-mapping>
<servlet-name>servletA</servlet-name>
<url-pattern>blue</url-pattern>
</servlet-mapping>
<!-- 次のサーブレットマッピングは、servletB と呼ばれるサーブレット
(サーブレット要素を参照) を「yellow」の URL パターンにマップする。
この URL パターンは、このサーブレットを要求しているときに使用される。
例 : http://host:port/myWebApp/yellow -->
<servlet-mapping>
<servlet-name>servletB</servlet-name>
<url-pattern>yellow</url-pattern>
</servlet-mapping>
<!--次の welcome-file-list で welcome-file を指定する。
ウェルカム ファイルについてはこのマニュアルの別の場所で説明 -->
<welcome-file-list>
<welcome-file>hello.html</welcome-file>
</welcome-file-list>
<!--次の error-page 要素で、標準の
HTTP エラー応答ページ (この場合は HTTP エラー 404) に代わる
ページを指定する -->
<error-page>
<error-code>404</error-code>
<location>/error.jsp</location>
</error-page>
</web-app>
WebLogic 固有のデプロイメント記述子 (weblogic.xml) の記述
weblogic.xml ファイルには、Web アプリケーション用の WebLogic 固有の属性が入っています。このファイルでは、HTTP セッション パラメータ、HTTP クッキー パラメータ、JSP パラメータ、リソース参照、セキュリティ ロール割り当て、文字セット マッピング、およびコンテナ属性を定義します。
DataSource、EJB、セキュリティ レルムなどの外部リソースを web.xml デプロイメント記述子に定義する場合は、任意の記述名を使用してリソースを定義できます。リソースにアクセスするには、weblogic.xml ファイルを使用して、このリソース名を JNDI ツリーの実際のリソース名にマッピングします。このファイルは、Web アプリケーションの WEB-INF ディレクトリに入れます。
WebLogic Server のサンプルおよび例をインストールした場合は、Pet Store サンプルの web.xml および weblogic.xml ファイルで、Web アプリケーションのデプロイメント記述子の実際の例を参照できます。これらのファイルは、WebLogic Server の配布ディレクトリ、/samples/PetStore/source/dd/war/WEB-INF にあります。
weblogic.xml ファイル内のタグ要素の順序は、このドキュメントに示されている順序に従っていなければなりません。
手順 1: weblogic.xml ファイルの DOCTYPE ヘッダからの開始
このヘッダは、デプロイメント記述子の DTD ファイルの場所とバージョンを指しています。このヘッダは外部 URL の www.beasys.com を参照していますが、WebLogic Server には独自の DTD ファイルが用意されているので、ホスト サーバがインターネットにアクセスする必要はありません。ただし、この DOCTYPE 要素を web.xml ファイルに入れて、外部 URL を参照するようにしなければなりません。この要素内の DTD バージョンはこのデプロイメント記述子のバージョンを識別するためのものだからです。
手順 2: セキュリティ レルムへのセキュリティ ロール名のマッピング
詳細については、security-role-assignmentを参照。 |
|
複数のロールを定義する必要がある場合は、<role-name> タグおよび <principal-name> タグの対を別々の <security-role-assignment> 要素内に追加して定義します。
この手順では、Web アプリケーションで使用するリソースを JNDI ツリーにマッピングします。web.xml デプロイメント記述子に <ejb-ref-name> または <res-ref-name> を定義する場合は、これらの名前を weblogic.xml でも参照し、WebLogic Server で使用可能な実際の JNDI 名をマッピングします。次の例では、データソースは myDataSource という名前のサーブレットで参照され、続いて web.xml で定義されているデータ型で参照されています。最後に、weblogic.xml ファイルで、myDataSource は JNDI ツリー内で使用可能な JNDI 名の accountDataSource にマッピングされています。JNDI 名は、JNDI ツリー内にバインドされているオブジェクトの名前と一致している必要があります。オブジェクトの JNDI ツリーへのバインドは、プログラムで行うことも、Administration Console でコンフィグレーションすることも可能です。詳細については、『WebLogic JNDI プログラマーズ ガイド』を参照してください。
javax.sql.DataSource ds = (javax.sql.DataSource) ctx.lookup
("myDataSource");
<resource-ref>
. . .
<res-ref-name>myDataSource</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>CONTAINER</res-auth>
. . .
</resource-ref>
<resource-description>
<res-ref-name>myDataSource</res-ref-name>
<jndi-name>accountDataSource</jndi-name>
</security-role-ref>
EJB も同様のパターンで JNDI ツリーにマッピングしますが、<resource-description> 要素の <res-ref-name> 要素の代わりに <ejb-reference-description> 要素の <ejb-ref-name> 要素を使用します。
詳細については、reference-descriptorを参照。 |
|
詳細については、resource-descriptionを参照。 |
|
詳細については、ejb-reference-descriptionを参照。 |
|
Web アプリケーションの HTTP セッション パラメータを <session-param> タグ内に定義します。このタグは <session-descriptor> タグ内でネストします。各 <session-param> には、定義するパラメータの名前となる <param-name>...</param-name> 要素と、パラメータの値を提供する <param-value>...</param-value> 要素を指定する必要があります。HTTP セッション パラメータの一覧と設定方法の詳細については、jsp-descriptorを参照してください。
詳細については、jsp-descriptorを参照。 |
|
Web アプリケーションの JSP コンフィグレーション パラメータを <jsp-param> タグ内に定義します。このタグは <jsp-descriptor> タグ内でネストします。各 <jsp-param> には、定義するパラメータの名前となる <param-name>...</param-name> 要素と、パラメータの値を提供する <param-value>...</param-value> 要素を指定する必要があります。JSP パラメータの一覧と設定方法の詳細については、jsp-descriptor を参照してください。
詳細については、jsp-descriptorを参照。 |
|
<container-descriptor> 要素に入力できる有効で省略可能な要素として、<check-auth-on-forward> 要素があります。
詳細については、resolve はアクションを示すを参照。 |
|
<redirect-with-absolute-url> |
|
省略可能な <charset-params> 要素は、文字セット マッピングを定義するために使用します。
詳細については、resolve はアクションを示すを参照。 |
|
<java-charset-name> |
|
<iana-charset-name> |
|
<java-charset-name> |
|