![]() |
![]() |
|
|
| |
この章では、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 アプリケーションで必要なわけではありません。
デプロイメント記述子を編集するためのツール
デプロイメント記述子の編集には、次のツールのいずれかを使用できます。
emacs
、vi
、または使い慣れた IDE などのプレーンなテキスト エディタ。
詳細については、「Web アプリケーションのパッケージ化」を参照してください。
この節では、web.xml
デプロイメント記述子を作成する手順について説明します。Web アプリケーションのコンポーネントによっては、Web アプリケーションのコンフィグレーションとデプロイに、ここで示す要素のすべてが必要なわけではないことがあります。
web.xml
ファイル内の要素は、このドキュメントで取り上げる順で入力しなければなりません。
web.xml ファイルの主な作成手順
WebLogic Server のサンプルおよび例をインストールした場合は、Pet Store サンプルの web.xml
および weblogic.xml
ファイルで、Web アプリケーションのデプロイメント記述子の実際の例を参照できます。これらのファイルは、WebLogic Server の配布ディレクトリ、\samples
\PetStore
\source
\dd
\war
\WEB-INF
にあります。
web.xml ファイルの詳しい作成手順
ファイル名を web.xml
として、Web アプリケーションの WEB-INF
ディレクトリに入れます。任意のテキスト エディタを使用します。
DOCTYPE
文は、デプロイメント記述子のドキュメント タイプ定義(DTD)ファイルの場所とバージョンを指しています。このヘッダは外部 URL の java.sun.com
を参照していますが、WebLogic Server には独自の DTD ファイルが用意されているので、ホスト サーバがインターネットにアクセスする必要はありません。ただし、この <!DOCTYPE...>
要素を web.xml
ファイルに入れて、外部 URL を参照するようにしなければなりません。この要素内の DTD のバージョンはこのデプロイメント記述子のバージョンを識別するためのものだからです。
次の DOCTYPE
文のいずれかを使用してください。
DOCTYPE
文を使用します。
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
注意: サーブレット仕様バージョン 2.3 の実装は、サーブレット仕様の最終草案 1 をベースにしており、変更される可能性があります。バージョン 2.3 で導入された機能を使用する計画がある場合、この仕様がまた確定しておらず、将来、変更される可能性があることに注意してください。最終草案 2 で追加された機能はサポートされていません。
DOCTYPE
文を使用します。
<!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 組にしてすべてのエントリを挟みます。
この Web アプリケーションを記述するすべての要素は
|
|
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()
メソッドを使用して、これらのパラメータにアクセスできます。
weblogic.http.clientCertProxy
コンテキスト パラメータは、WL-Proxy-Client-Cert ヘッダ内のクライアント証明書を信頼することを指定します。WebLogic Server のこれまでのリリースでは、WL-Proxy-Client-Cert ヘッダのクライアント証明書はデフォルトで信頼されていました。
|
詳細については、 context-param 要素を参照。 |
|
(必須) |
|
(必須) |
|
(省略可能) |
|
|
手順 6 : フィルタのコンフィグレーション(サーブレット 2.3 仕様のみ)
それぞれのフィルタには名前とフィルタ クラスがあります。フィルタの詳細については、 フィルタのコンフィグレーションを参照してください。フィルタにも初期化パラメータを使用できます。次の要素はフィルタを定義するものです。
|
詳細については、 filter 要素を参照してください。 |
|
(省略可能) |
|
(必須) |
|
(省略可能) |
|
(省略可能) |
|
(必須) |
|
(省略可能) |
|
(必須) |
|
(必須) |
|
(省略可能) |
|
|
手順 7 : フィルタ マッピングの定義(サーブレット 2.3 仕様のみ)
フィルタの宣言をした後で、各フィルタを URL パターンにマップします。
|
詳細については、 filter-mapping 要素を参照。 |
|
(必須) |
|
(必須) |
|
|
手順 8 : アプリケーション リスナのコンフィグレーション(サーブレット 2.3 仕様のみ)
それぞれのリスナ クラスに対して、独立した <listener>
要素を使って、Web アプリケーション イベント リスナをコンフィグレーションします。
詳細については、次を参照してください。 アプリケーション イベントとリスナ
< |
詳細については、 listener 要素を参照。 |
|
(必須) |
|
|
サーブレットをデプロイするには、サーブレットに名前を付けて、その動作を実装するためのクラス ファイルまたは JSP を指定し、その他のサーブレット固有のプロパティを設定します。Web アプリケーション内の各サーブレットを <servlet>...</servlet>
要素内にリストします。すべてのサーブレットのエントリを作成したら、サーブレットを URL パターンにマッピングする要素を含める必要があります。これらのマッピング要素については、
手順 10:URL へのサーブレットのマッピングで説明しています。
詳細については、 サーブレットのコンフィグレーションを参照してください。
次の要素を使用して、サーブレットを宣言します。
|
詳細については、 servlet 要素を参照。 |
|
(必須) |
|
(必須) |
|
(省略可能) 詳細については、 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 タイプを定義する。 詳細については、 mime-mapping 要素を参照。 |
|
|
|
|
|
|
詳細については、 ウェルカム ページのコンフィグレーションを参照してください。
|
(ウェルカム ページは省略可能) 詳細については、 welcome-file-list 要素を参照。 |
|
ウェルカム ページのコンフィグレーションと、「WebLogic Server による HTTP リクエストの解決方法」も参照。 |
|
|
詳細については、 HTTP エラー応答のカスタマイズを参照してください。
|
(省略可能) エラーに応答するためのカスタマイズされたページを定義する。 |
|
|
|
|
|
|
|
|
詳細については、 JSP タグ ライブラリのコンフィグレーションを参照してください。
|
(省略可能) JSP タグ ライブラリを識別する。 詳細については、 taglib 要素を参照。 |
|
(必須) |
|
(必須) |
|
|
JSP で使用する taglib ディレクティブの例を示します。
<%@ taglib uri="
string_pattern
" prefix="taglib" %>
詳細については、『JSP Tag Extentions プログラマーズ ガイド』を参照してください。
詳細については、 Web アプリケーションでの外部リソースのコンフィグレーションを参照してください。
|
(省略可能) 詳細については、 resource-ref 要素を参照。 |
|
(必須) |
|
(必須) |
|
(必須) |
|
(省略可能) |
|
(必須) |
セキュリティを用いる Web アプリケーションでは、ユーザは、リソースにアクセスするためにログインする必要があります。ユーザの資格はセキュリティ レルムに照らして検証され、認可されると、ユーザは Web アプリケーション内の指定されたリソースにのみアクセスできるようになります。
Web アプリケーションのセキュリティは、3 つの要素を使用してコンフィグレーションします。
<login-config>
要素では、ユーザにログインを求める方法とセキュリティ レルムの場所を指定します。この要素が指定されている場合、ユーザが Web アプリケーション内で定義されている <security-constraint>
によって制約されたすべてのリソースにアクセスするには認証を受ける必要があります。
<security-constraint>
要素では、URL マッピングを使用したリソースの集合へのアクセス特権を定義します。
<security-role>
要素は、レルム内のグループまたはプリンシパルを表します。このセキュリティ ロール名は <security-constraint>
要素で使用され、<security-role-ref>
要素を介してサーブレットのコードで使用される代替ロール名にリンクされます。
詳細については、 Web アプリケーション リソースへのアクセスの制限を参照してください。
|
(省略可能) 詳細については、 security-constraint 要素を参照。 |
|
(必須) 詳細については、 web-resource-collection 要素を参照。 |
|
(必須) |
< |
(省略可能) |
|
(省略可能) |
|
(省略可能) |
|
|
|
(省略可能) 詳細については、 auth-constraint 要素を参照。 |
|
(省略可能) |
|
|
|
(省略可能) 詳細については、 user-data-constraint 要素を参照。 |
< |
(省略可能) |
|
(必須) |
|
|
|
|
手順 18 : ログイン認証の設定
詳細については、 Web アプリケーション用の認証の設定を参照してください。
|
(省略可能) 詳細については、 login-config 要素を参照。 |
|
(省略可能) ユーザの認証に使用する方法を指定する。 |
|
(省略可能) 詳細については、「セキュリティ レルムの指定」を参照。 |
|
(省略可能) 詳細については、 form-login-config 要素を参照。
|
|
(必須) |
|
(必須) |
|
|
手順 19 : セキュリティ ロールの定義
詳細については、 Web アプリケーションでのセキュリティのコンフィグレーションを参照してください。
|
(省略可能) 詳細については、 security-role 要素を参照。 |
< |
(省略可能) |
|
(必須) |
|
|
詳細については、 Web アプリケーションでの外部リソースのコンフィグレーションを参照してください。
|
(省略可能) 詳細については、 env-entry 要素を参照。 |
< |
(省略可能) |
|
(必須) |
|
(必須) |
|
(必須) |
|
|
手順 21 : エンタープライズ JavaBean(EJB)リソースの参照
詳細については、 Web アプリケーションでの EJB の参照を参照してください。
|
(省略可能) 詳細については、 ejb-ref 要素を参照。 |
< |
(省略可能) |
|
(必須) |
|
(必須) |
|
(必須) |
|
(必須) |
|
(省略可能) |
|
(省略可能) |
|
(必須) |
web.xml のサンプル
コード リスト 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
ファイル内のタグ要素の順序は、このドキュメントに示されている順序に従っていなければなりません。
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>
要素内に追加して定義します。
手順 3 : リソースの JNDI へのマッピング
この手順では、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
");
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>
</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 セッション パラメータの一覧と設定方法の詳細については、
session-descriptor 要素を参照してください。
|
詳細については、 session-descriptor 要素を参照。 |
|
|
|
|
|
|
|
|
|
|
手順 5 : JSP パラメータの定義
Web アプリケーションの JSP コンフィグレーション パラメータを <jsp-param>
タグ内に定義します。このタグは <jsp-descriptor>
タグ内でネストします。各 <jsp-param>
には、定義するパラメータの名前となる <param-name>...</param-name>
要素と、パラメータの値を提供する <param-value>...</param-value>
要素を指定する必要があります。JSP パラメータの一覧と設定方法の詳細については、
jsp-descriptor 要素 を参照してください。
|
詳細については、 jsp-descriptor 要素を参照。 |
|
|
|
|
|
|
|
|
|
|
手順 6 : コンテナ パラメータの定義
<container-descriptor>
要素に入力できる有効で省略可能な要素として、<check-auth-on-forward>
要素があります。
|
詳細については、 |
|
|
|
|
|
|
手順 7 : 文字セット パラメータの定義
省略可能な <charset-params>
要素は、文字セット マッピングを定義するために使用します。
|
詳細については、 charset-params 要素を参照。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
手順 8 : 記述子ファイルの終了
次のタグを使用して記述子ファイルを閉じます。
|
|
![]() |
![]() |
![]() |