Sun ONE Application Server 7 Web アプリケーション開発者ガイド |
Web モジュールの構築と配備このmoduleでは、Sun ONE Application Server で Web モジュールを構築して配備する方法について説明します。構築と配備の概要については、『Sun ONE Application Server 開発者ガイド』を参照してください。
このmoduleには次の節があります。
- Web アプリケーションの構造
- Web 配備記述子の作成
- Web アプリケーションの配備
- Web アプリケーションの動的再読み込み
- sun-web-app_2_3-0.dtd ファイル
- sun-web.xml ファイルの要素
- Web モジュール XML ファイルのサンプル
Web アプリケーションの構造
Web アプリケーションはディレクトリ構造を持っていて、すべてアプリケーションのドキュメントルート (/hello など) に対するマッピングからアクセスできます。ドキュメントルートには、JSP ファイル、HTML ファイル、およびイメージファイルなどの静的ファイルが含まれます。
WAR (Web アプリケーションアーカイブ) ファイルには、完全な Web アプリケーションが圧縮形式で格納されます。
アプリケーションに関連するファイルで、アプリケーションの一般のドキュメントツリーに含まれないものはすべて、ドキュメントルートの下の WEB-INF という特殊なディレクトリに置かれます。WEB-INF 内のファイルはどれも、直接クライアントに提供することはできません。WEB-INF に置かれる内容は次のとおりです。
- /WEB-INF/classes/* (サーブレットやほかのクラスのディレクトリ)
- /WEB-INF/lib/*.jar (Beans やほかのユーティリティクラスを格納した JAR ファイルのディレクトリ)
- /WEB-INF/web.xml および /WEB-INF/sun-web.xml (XML ベースの配備記述子。マッピング、初期化パラメータ、およびセキュリティ制約を含む Web アプリケーション設定を指定する)
Web アプリケーションのディレクトリ構造は、J2EE 仕様に示された構造に従います。簡単な Web アプリケーションのディレクトリ構造の例を次に示します。
+ hello/
|--- index.jsp
|--+ META-INF/
| |--- MANIFEST.MF
'--+ WEB-INF/
|--- web.xml
'--- sun-web.xml
Web モジュールを含む簡単な J2EE アプリケーションのディレクトリ構造の例を次に示します。
+ converter_1/
|--- converterClient.jar
|--+ META-INF/
| |--- MANIFEST.MF
| |--- application.xml
| '--- sun-application.xml
|--+ war-ic_war/
| |--- index.jsp
| |--+ META-INF/
| | |--- MANIFEST.MF
| '--+ WEB-INF/
| |--- web.xml
| '--- sun-web.xml
|--+ ejb-jar-ic_jar/
| |--- Converter.class
| |--- ConverterBean.class
| |--- ConverterHome.class
| '--+ META-INF/
| |--- MANIFEST.MF
| |--- ejb-jar.xml
| '--- sun-ejb-jar.xml
'--+ app-client-ic_jar/
|--- ConverterClient.class
'--+ META-INF/
|--- MANIFEST.MF
|--- application-client.xml
'--- sun-application-client.xml
Web 配備記述子の作成
Sun ONE Application Server の Web モジュールには、次の 2 つの配備記述子ファイルが含まれています。
- J2EE 標準ファイル (web.xml)。詳細については、Java サーブレット仕様バージョン 2.3 の第 13 章「Deployment Descriptor」を参照。この仕様は次の Web サイトにある
- Sun ONE Application Server 固有のオプションファイル (sun-web.xml)。詳細については、このmoduleを参照
web.xml ファイルと sun-web.xml ファイルを作成し、Web モジュールを配備するには、管理インタフェースまたは Sun ONE Studio 4 を使用するのが最も簡単な方法です。詳細については、次の節または『Sun ONE Application Server 開発者ガイド』を参照してください。web.xml ファイルと sun-web.xml ファイルの例については、「Web モジュール XML ファイルのサンプル」を参照してください。
これらのファイルを作成した後に、管理インタフェースまたは、エディタとコマンド行ユーティリティ (Ant など) の組み合わせを使用して、再構築および再配備を行い配備記述子の情報を更新できます。Apache Ant 1.4.1 は、Sun ONE Application Server に付属しています。詳細については、『Sun ONE Application Server 開発者ガイド』を参照してください。
Web アプリケーションの配備
Web アプリケーションの配備、配備取り消し、および再配備を行うときに、サーバーを再起動する必要はありません。つまり、配備は動的に行われます。
Web アプリケーションを配備するには次の方法があります。ここではそれぞれの方法について、簡単に説明します。
配備の詳細については、『Sun ONE Application Server 開発者ガイド』を参照してください。
JSP 用に生成されたソースを保存するには、sun-web.xml ファイル内の jsp-config 要素に -keepgenerated プロパティを追加します。Web アプリケーションを配備するときにこのプロパティを追加すると、生成されたソースが保存されます。保存先は、アプリケーションの場合は instance_dir/generated/jsp/j2ee-apps/app_name/module_name、個別に配備された Web モジュールの場合は instance_dir/generated/jsp/j2ee-modules/module_name です。
コマンド行の使用
コマンド行を使って Web アプリケーションを配備するには、次の手順を実行します。
- 配備記述子ファイル (web.xml および sun-web.xml) を手動で編集します。
- Ant ビルドコマンド (build war など) を実行して適切な WAR モジュールを再構築します。
- 必要に応じて、Web アプリケーションを WAR ファイルに書き込みます。これはオプションです。次に例を示します。
jar -cvf module_name.war *
- asadmin deploy コマンドを使って WAR モジュールを配備します。構文は次のとおりです。
asadmin deploy --user admin_user [--password admin_password] [--passwordfile password_file] --host hostname --port adminport [--secure | -s] [--virtualservers virtual_servers] [--type application|ejb|web|connector] [--contextroot contextroot] [--force=true] [--precompilejsp=false] [--verify=false] [--name component_name] [--upload=true] [--retrieve local_dirpath] [--instance instance_name] filepath
たとえば、次のコマンドは Web アプリケーションを個別モジュールとして配備します。
asadmin deploy --user jadams --password secret --host localhost --port 4848 --type web --instance server1 myWebApp.war
upload が false に設定されている場合、filepath はサーバーマシン上の絶対パスで指定します。
管理インタフェースの使用
管理インタフェースを使って Web アプリケーションを配備するには、次の手順を実行します。
- サーバーインスタンスの下にあるアプリケーションコンポーネントを開きます。
- 「Web アプリケーション」ページに移動します。
- 「配備」ボタンをクリックします。
- WAR モジュールへのフルパスを入力するか、「ブラウズ」をクリックしてこのモジュールを探し、「了解」ボタンをクリックします。
- Web アプリケーション名とコンテキストルートを入力します。
Web アプリケーションが存在する場合は、ボックスにチェックマークを付けて、このアプリケーションを再配備できます。これはオプションです。
- 仮想サーバー名の横のボックスにチェックマークを付けて、Web アプリケーションを 1 個以上の仮想サーバーに割り当てます。
- 「了解」ボタンをクリックします。
Sun ONE Studio の使用
Sun ONE Studio 4 を使って、Web アプリケーションを構築および配備できます。Sun ONE Studio の詳細については、Sun ONE Studio 4, Enterprise Edition のチュートリアルを参照してください。
注 Sun ONE Studio では、Web アプリケーションを配備することを「実行」と呼んでいます。
Web アプリケーションの動的再読み込み
Web アプリケーションのコードを変更した場合、動的再読み込みが有効になっていれば、Web アプリケーションの再配備やサーバーの再起動を行う必要はありません。動的再読み込みを有効にするには、次のいずれかを行います。
- 管理インタフェースを使用する
サーバーインスタンスの下にあるアプリケーションコンポーネントを開きます。
「再読み込みを有効」ボックスをオンにして動的再読み込みを有効にします。
「再読込のポーリング間隔」フィールドに秒数を入力して、アプリケーションとモジュールにコードの変更がないか確認して動的に再読み込みする間隔を設定します。
サーバーインスタンスページに移動し、「変更の適用」ボタンを選択します。
詳細については、『Sun ONE Application Server 管理者ガイド』を参照してください。
- server.xml ファイルの applications 要素の次の属性を編集後、サーバーを再起動する
dynamic-reload-enabled="true" に設定して、動的再読み込みを有効にします。
dynamic-reload-poll-interval-in-seconds で、アプリケーションとモジュールにコードの変更がないか確認して動的に再読み込みする間隔を設定します。
server.xml の詳細については、『Sun ONE Application Server 管理者用設定ファイルリファレンス』を参照してください。
さらに、新しいサーブレットファイルの読み込み、変更に関連する EJB の再読み込み、または配備記述子の変更の再読み込みを行うには、次の操作を行う必要があります。
- 配備されたアプリケーションのルートに .reload という名前の空のファイルを作成します。
instance_dir/applications/j2ee-apps/app_name/.reload
または個別に配備されたモジュールに作成します。
instance_dir/applications/j2ee-modules/module_name/.reload
- 上記の変更を行うたびに、.reload ファイルのタイムスタンプ (UNIX では touch.reload) を明示的に更新します。
JSP の場合、変更は自動的に再読み込みされます。その周期は、sun-web.xml ファイル内の jsp-config 要素の reload-interval プロパティに設定します。JSP の動的再読み込みを無効にするには、reload-interval プロパティの値を -1 に設定します。
sun-web-app_2_3-0.dtd ファイル
sun-application_2_3-0.dtd ファイルは、sun-web.xml ファイルで使用できる要素とサブ要素、およびこれらの要素に指定できる属性などの、ファイル構造を定義します。sun-web-app_2_3-0.dtd ファイルは install_dir/lib/dtds ディレクトリにあります。
注 sun-web-app_2_3-0.dtd ファイルは編集しないでください。このファイルの内容は、Sun ONE Application Server のバージョンが変更された場合にのみ変更されます。
DTD ファイルおよび XML の全般的な情報については、次のサイトにある XML 仕様を参照してください。
DTD ファイルに定義された各要素 (対応する XML ファイル内に置かれている場合もある) には、次の要素が含まれています。
サブ要素
要素にはサブ要素を含めることができます。たとえば、次のファイルコードは cache 要素を定義します。
<!ELEMENT cache (cache-helper*, default-helper?, property*, cache-mapping*)>
この ELEMENT タグは、cache 要素には cache-helper、default-helper、property、および cache-mapping という各サブ要素を含めることができると指定しています。
次の表に、サブ要素のサフィックス文字 (省略可能) によって決まる必要指定数、つまり指定可能なサブ要素の数を示します。左の列にサブ要素の末尾文字、右の列に対応する必要指定数を示します。
   必要指定数とサブ要素のサフィックス
サブ要素のサフィックス
必要指定数
element*
このサブ要素を含まないか、1 個以上含めることができる
element?
このサブ要素を含まないか、1 個含めることができる
element+
このサブ要素を 1 個以上含まなければならない
element (サフィックスなし)
このサブ要素を 1 個だけ含まなければならない
要素にほかの要素を含めることができない場合は、カッコで囲まれた要素名のリストの代わりに、EMPTY または (#PCDATA) が表示されます。
データ
要素の中には、サブ要素の代わりに文字データを含むものもあります。これらの要素は、次の形式で定義されます。
<!ELEMENT element-name (#PCDATA)>
次に例を示します。
<!ELEMENT description (#PCDATA)>
sun-web.xml ファイルでは、データ要素の中の空白はデータの一部として扱われます。そのため、データ要素で区切られたデータの前後には余分な空白がないようにする必要があります。次に例を示します。
<description>class name of session manager</description>
属性
ATTLIST タグを持つ要素には属性 (名前 - 値のペア) が含まれています。次に例を示します。
<!ATTLIST cache max-capacity CDATA "4096"
timeout CDATA "30"
enabled %boolean; "false">cache 要素には、max-capacity、timeout、または enabled という属性を指定することができます。
#REQUIRED ラベルは、値を指定する必要があることを示します。#IMPLIED ラベルは、その属性の指定は省略可能であり、Sun ONE Application Server がデフォルト値を生成することを示します。可能な場合は、"true" などの明示的なデフォルト値が示されます。
属性宣言は、属性のタイプを指定します。たとえば、CDATA は文字データ、%boolean は事前定義された列挙型データを表します。
sun-web.xml ファイルの要素
この節では、sun-web.xml ファイル内の XML 要素について説明します。要素は次のグループに分類されます。
- 全般的な要素
- セキュリティに関する要素
- セッションに関する要素
- 参照に関する要素
- キャッシュに関する要素
- クラスローダーに関する要素
- JSP に関する要素
- 国際化に関する要素
注 特に指定しない限り、サブ要素は各サブ要素欄に示されている順に定義する必要があります。
全般的な要素
全般的な要素は次のとおりです。
sun-web-app
Web モジュールに対する Sun ONE Application Server 固有の設定を定義します。sun-web-app 要素はルート要素であり、1 つの sun-web.xml ファイルに 1 つだけ存在します。
サブ要素
次の表は、sun-web-app 要素のサブ要素を示します。左の列にサブ要素名、中央の列に必要指定数、右の列に要素の説明を示します。
属性
なし
プロパティ
次の表は、sun-web-app 要素のプロパティを示します。左の列にプロパティの名前、中央の列にデフォルト値、右の列にそのプロパティの説明を示します。
property
名前と値を持つプロパティを指定します。property は、次のいずれかまたは両方の親要素に設定情報を追加します。
- Sun ONE Application Server の省略可能な要素
- Sun ONE Application Server が認識していない、LDAP サーバーや Java クラスなどのシステムまたはオブジェクトに必要な要素
たとえば、manager-properties 要素には property サブ要素を指定することができます。
<manager-properties>
<property name="reapIntervalSeconds" value="20" />
</manager-properties>manager-properties 要素が使用するプロパティは、親要素である session-manager 要素の persistence-type 属性の値によって決定します。詳細については、session-manager 要素の説明を参照してください。
サブ要素
次の表は、property 要素のサブ要素を示します。左の列にサブ要素名、中央の列に必要指定数、右の列に要素の説明を示します。
   property のサブ要素
要素
必要指定数
説明
0 または 1 個
プロパティの説明文を指定する
属性
次の表は、property 要素の属性を示します。左の列に属性の名前、中央の列にデフォルト値、右の列にその属性の説明を示します。
   property 属性
属性
デフォルト値
説明
name
なし
プロパティの名前を指定する
value
なし
プロパティの値を指定する
description
この要素を含んでいる要素に関する説明文を指定するデータです。
サブ要素
なし
属性
なし
セキュリティに関する要素
セキュリティに関する要素は次のとおりです。
security-role-mapping
現在のアクティブレルムに存在するユーザーやグループにロールを割り当てます。現在のアクティブレルムを定義する方法については、『Sun ONE Application Server 開発者ガイド』を参照してください。
サブ要素
次の表は、security-role-mapping 要素のサブ要素について示します。左の列にサブ要素名、中央の列に必要指定数、右の列に要素の説明を示します。
   security-role-mapping のサブ要素
要素
必要指定数
説明
1 個のみ
ロール名
1 個以上の principal-name または group-name が必要
現在のレルムに存在する主体 (ユーザー) 名
1 個以上の principal-name または group-name が必要
現在のレルムに存在するグループ名
属性
なし
servlet
サーブレットの主体名を指定します。この名前は、web-xml で定義された run-as ロールに使用されます。
サブ要素
次の表は、servlet 要素のサブ要素を示します。左の列にサブ要素名、中央の列に必要指定数、右の列に要素の説明を示します。
   servlet のサブ要素
要素
必要指定数
説明
1 個のみ
サーブレットの名前。この名前は web.xml 内の servlet-name と一致する
1 個のみ
現在のレルムに存在する主体 (ユーザー) 名
属性
なし
servlet-name
サーブレットの名前を指定するデータです。この名前は web.xml 内の servlet-name と一致します。この名前は web.xml 内に存在している必要があります。
サブ要素
なし
属性
なし
role-name
web.xml ファイル内の security-role 要素の role-name を指定するデータです。
サブ要素
なし
属性
なし
principal-name
現在のレルムに存在する主体 (ユーザー) 名を指定するデータです。
サブ要素
なし
属性
なし
group-name
現在のレルムに存在するグループ名を指定するデータです。
サブ要素
なし
属性
なし
セッションに関する要素
セッションに関する要素は次のとおりです。
- session-config
- session-manager
- manager-properties
- store-properties
- session-properties
- cookie-properties
注 セッションマネージャインタフェースは不確定なインタフェースです。不確定なインタフェ―スは試験的または一時的なインタフェースであるため、次のリリースで互換性がなくなったり、削除されたり、または安定したインタフェースに置き換えられたりする場合があります。
session-config
セッションの設定情報を指定します。
サブ要素
次の表は、session-config 要素のサブ要素を示します。左の列にサブ要素名、中央の列に必要指定数、右の列に要素の説明を示します。
   session-config のサブ要素
要素
必要指定数
説明
0 または 1 個
セッションマネージャの設定情報を指定する
0 または 1 個
セッションのプロパティを指定する
0 または 1 個
セッション cookie のプロパティを指定する
属性
なし
session-manager
セッションマネージャの情報を指定します。
サブ要素
次の表は、session-manager 要素のサブ要素を示します。左の列にサブ要素名、中央の列に必要指定数、右の列に要素の説明を示します。
   session-manager のサブ要素
要素
必要指定数
説明
0 または 1 個
セッションマネージャのプロパティを指定する
0 または 1 個
セッションの持続性 (格納) のプロパティを指定する
属性
次の表は、session-manager 要素の属性を示します。左の列に属性の名前、中央の列にデフォルト値、右の列にその属性の説明を示します。
   session-manager の属性
属性
デフォルト値
説明
persistence-type
memory
(省略可能) セッションの持続性メカニズムを指定する。有効な値は memory および file
custom 値は実装されないので使用できない
manager-properties
セッションマネージャのプロパティを指定します。
サブ要素
次の表は、manager-properties 要素のサブ要素を示します。左の列にサブ要素名、中央の列に必要指定数、右の列に要素の説明を示します。
   manager-properties のサブ要素
要素
必要指定数
説明
0 または 1 個以上
名前と値を持つプロパティを指定する
属性
なし
プロパティ
次の表は、manager-properties 要素のプロパティを示します。左の列にプロパティの名前、中央の列にデフォルト値、右の列にそのプロパティの説明を示します。
   manager-properties のプロパティ
プロパティ名
デフォルト値
説明
reapIntervalSeconds
60
期限切れのセッションをチェックする周期を秒単位で指定する
セッションデータが変更される頻度より小さい値を設定することを推奨する。たとえば、頻繁にアクセスされる Web サイト上のヒットカウンタサーブレットの場合、この値をできるだけ小さくする必要がある (1 秒)。そうしないと、サーバーを再起動するたびに最後の数回分のヒットが失われる可能性がある
maxSessions
-1
アクティブセッションの最大数を指定する。制限しない場合は -1 (デフォルト値)
sessionFilename
なし。再起動すると、その前の状態は破棄される
アプリケーションの再起動の間にセッション状態を保持するファイルの絶対パスまたは相対パスを指定する (状態の保持が可能な場合)。相対パスは、この Web モジュールの一時ディレクトリを基準とした場所を示す
session-manager 要素の persistence-type 属性が memory の場合にのみ設定可能
store-properties
セッションの持続性 (格納) のプロパティを指定します。
サブ要素
次の表は、store-properties 要素のサブ要素を示します。左の列にサブ要素名、中央の列に必要指定数、右の列に要素の説明を示します。
   store-properties のサブ要素
要素
必要指定数
説明
0 または 1 個以上
名前と値を持つプロパティを指定する
属性
なし
プロパティ
次の表は、store-properties 要素のプロパティを示します。左の列にプロパティの名前、中央の列にデフォルト値、右の列にそのプロパティの説明を示します。
session-properties
セッションのプロパティを指定します。
サブ要素
次の表は、session-properties 要素のサブ要素を示します。左の列にサブ要素名、中央の列に必要指定数、右の列に要素の説明を示します。
   session-properties のサブ要素
要素
必要指定数
説明
0 または 1 個以上
名前と値を持つプロパティを指定する
属性
なし
プロパティ
次の表は、session-properties 要素のプロパティを示します。左の列にプロパティの名前、中央の列にデフォルト値、右の列にそのプロパティの説明を示します。
cookie-properties
セッション cookie のプロパティを指定します。
サブ要素
次の表は、cookie-properties 要素のサブ要素を示します。左の列にサブ要素名、中央の列に必要指定数、右の列に要素の説明を示します。
   cookie-properties のサブ要素
要素
必要指定数
説明
0 または 1 個以上
名前と値を持つプロパティを指定する
属性
なし
プロパティ
次の表は、cookie-properties 要素のプロパティを示します。左の列にプロパティの名前、中央の列にデフォルト値、右の列にそのプロパティの説明を示します。
参照に関する要素
参照に関する要素は次のとおりです。
- resource-env-ref
- resource-env-ref-name
- resource-ref
- res-ref-name
- default-resource-principal
- name
- password
- ejb-ref
- ejb-ref-name
- jndi-name
resource-env-ref
対応する J2EE web.xml ファイルの resource-env-ref エントリ内の res-ref-name に、リソースの JNDI 絶対名 jndi-name を割り当てます。
サブ要素
次の表は、resource-env-ref 要素のサブ要素を示します。左の列にサブ要素名、中央の列に必要指定数、右の列に要素の説明を示します。
   resource-env-ref のサブ要素
要素
必要指定数
説明
1 個のみ
対応する J2EE web.xml ファイルの resource-env-ref エントリ内の res-ref-name を指定する
1 個のみ
リソースの JNDI 絶対名 jndi-name を指定する
属性
なし
resource-env-ref-name
対応する J2EE web.xml ファイルの resource-env-ref エントリ内の res-ref-name を指定するデータです。
サブ要素
なし
属性
なし
resource-ref
対応する J2EE web.xml ファイルの resource-ref エントリ内の res-ref-name に、リソースの JNDI 絶対名 jndi-name を割り当てます。
サブ要素
次の表は、resource-ref 要素のサブ要素を示します。左の列にサブ要素名、中央の列に必要指定数、右の列に要素の説明を示します。
   resource-ref のサブ要素
要素
必要指定数
説明
1 個のみ
対応する J2EE web.xml ファイルの resource-ref エントリ内の res-ref-name を指定する
1 個のみ
リソースの JNDI 絶対名 jndi-name を指定する
0 または 1 個
リソースのデフォルトの主体 (ユーザー) を指定する
属性
なし
res-ref-name
対応する J2EE web.xml ファイルの resource-ref エントリ内の res-ref-name を指定するデータです。
サブ要素
なし
属性
なし
default-resource-principal
リソースのデフォルトの主体 (ユーザー) を指定します。
この要素を JMS Connection Factory リソースとともに使用する場合、サブ要素 name および password は Sun ONE Message Queue のブローカユーザーリポジトリ内の有効なエントリでなければなりません。詳細については、『Sun ONE Message Queue 管理者ガイド』の「セキュリティ管理」の章を参照してください。
サブ要素
次の表は、default-resource-principal 要素のサブ要素を示します。左の列にサブ要素名、中央の列に必要指定数、右の列に要素の説明を示します。
   default-resource-principal のサブ要素
要素
必要指定数
説明
1 個のみ
主体の名前
1 個のみ
主体のパスワード
属性
なし
name
主体の名前を指定するデータです。
サブ要素
なし
属性
なし
password
主体のパスワードを指定するデータです。
サブ要素
なし
属性
なし
ejb-ref
対応する J2EE ejb-jar.xml ファイルの ejb-ref エントリ内の ejb-ref-name に、リソースの JNDI 絶対名 jndi-name を割り当てます。
サブ要素
次の表は、ejb-ref 要素のサブ要素を示します。左の列にサブ要素名、中央の列に必要指定数、右の列に要素の説明を示します。
   ejb-ref のサブ要素
要素
必要指定数
説明
1 個のみ
対応する J2EE ejb-jar.xml ファイルの ejb-ref エントリ内の ejb-ref-name を指定する
1 個のみ
リソースの JNDI 絶対名 jndi-name を指定する
属性
なし
ejb-ref-name
対応する J2EE ejb-jar.xml ファイルの ejb-ref エントリ内の ejb-ref-name を指定するデータです。
サブ要素
なし
属性
なし
jndi-name
URL リソースまたは server.xml ファイル内のリソースの、JNDI 絶対名 jndi-name を指定するデータです。
注 JNDI 内のその他のエンタープライズリソース名との衝突や移植性の問題を回避するため、Sun ONE Application Server アプリケーション内のすべての名前をすべて、文字列 java:comp/env で始める必要があります。
サブ要素
なし
属性
なし
キャッシュに関する要素
サーブレット関連の応答キャッシュの詳細については、「サーブレットの結果のキャッシュ」を参照してください。JSP のキャッシュの詳細については、「JSP キャッシュ」を参照してください。
キャッシュに関する要素は次のとおりです。
- cache
- cache-helper
- default-helper
- cache-mapping
- url-pattern
- timeout
- http-method
- key-field
- constraint-field
- value
cache
Web アプリケーションコンポーネントのキャッシュ機能を設定します。
サブ要素
次の表は、cache 要素のサブ要素を示します。左の列にサブ要素名、中央の列に必要指定数、右の列に要素の説明を示します。
   cache のサブ要素
要素
必要指定数
説明
0 または 1 個以上
CacheHelper インタフェースを実装するカスタムクラスを指定する
0 または 1 個
この要素を使って、組み込まれている cache-helper クラスのデフォルトのプロパティを変更できる
0 または 1 個以上
名前と値を持つ cache プロパティを指定する
0 または 1 個以上
URL パターンまたはサーブレット名に、そのキャッシュ制約条件を割り当てる
属性
次の表は、cache 要素の属性を示します。左の列に属性の名前、中央の列にデフォルト値、右の列にその属性の説明を示します。
   cache の属性
属性
デフォルト値
説明
max-entries
4096
(省略可能) キャッシュに格納できるエントリの最大数を指定する。正の整数であること
timeout-in-seconds
30
(省略可能) エントリが作成または更新された時点からキャッシュ内に保持される最大期間を秒単位で指定する。timeout 要素を使ってオーバーライドできる
enabled
false
(省略可能) サーブレットと JSP のキャッシュを有効にするかどうかを指定する。有効な値は、on、off、yes、no、1、0、true、false
プロパティ
次の表は、cache 要素のプロパティを示します。左の列にプロパティの名前、中央の列にデフォルト値、右の列にそのプロパティの説明を示します。
   cache のプロパティ
プロパティ
デフォルト値
説明
cacheClassName
com.sun.appserv.web.cache.LruCache
キャッシュ機能を実装するクラスの完全修飾名を指定する。指定できる値については、後述の表「cacheClassName の値」を参照
MultiLRUSegmentSize
4096
独自の LRU (過去に使用されたエントリの古い順) リストを持つ、キャッシュテーブルの 1 セグメントのエントリ数を指定する。cacheClassName に com.sun.appserv.web.cache.MultiLruCache を設定した場合のみ、このプロパティを設定する必要がある
MaxSize
無制限 (Long.MAX_VALUE)
キャッシュのメモリーサイズの上限値を K バイト単位または M バイト単位で指定する。たとえば、32KB や 2MB などの値を指定する。cacheClassName に com.sun.appserv.web.cache.BoundedMultiLruCache を設定した場合のみ、このプロパティを設定する必要がある
キャッシュクラス名
次の表は、cacheClassName プロパティに指定できる値を示します。左の列に値、右の列にその値が指定するキャッシュの種類を示します。
cache-helper
CacheHelper インタフェースを実装するクラスを指定します。詳細については、「CacheHelper インタフェース」を参照してください。
サブ要素
次の表は、cache-helper 要素のサブ要素を示します。左の列にサブ要素名、中央の列に必要指定数、右の列に要素の説明を示します。
   cache-helper のサブ要素
要素
必要指定数
説明
0 または 1 個以上
名前と値を持つプロパティを指定する
属性
次の表は、cache-helper 要素の属性を示します。左の列に属性の名前、中央の列にデフォルト値、右の列にその属性の説明を示します。
   cache-helper の属性
属性
デフォルト値
説明
name
デフォルト
ヘルパークラスの一意の名前を指定する。この名前は cache-mapping 要素で参照される
class-name
なし
キャッシュヘルパーの完全修飾クラス名を指定する。このキャッシュヘルパーは com.sun.appserv.web.CacheHelper インタフェースを実装する必要がある
default-helper
この要素を使って、組み込まれている default cache-helper クラスのプロパティを変更できます。
サブ要素
次の表は、default-helper 要素のサブ要素を示します。左の列にサブ要素名、中央の列に必要指定数、右の列に要素の説明を示します。
   default-helper のサブ要素
要素
必要指定数
説明
0 または 1 個以上
名前と値を持つプロパティを指定する
属性
なし
プロパティ
次の表は、default-helper 要素のプロパティを示します。左の列にプロパティの名前、中央の列にデフォルト値、右の列にそのプロパティの説明を示します。
   default-helper のプロパティ
プロパティ
デフォルト値
説明
cacheKeyGeneratorAttrName
組み込まれている default cache-helper のキー生成を使用する。この場合、サーブレットのパスに key-field の値が連結されてキーが生成される
キャッシュエンジンは ServletContext 内でこのプロパティに指定された値と同等の名前の属性を検索し、カスタマイズされた CacheKeyGenerator が使用されているかどうかを判断する。アプリケーションでカスタムのキージェネレータを用意し、デフォルトのヘルパーの代わりに使用できる
cache-mapping
URL パターンまたはサーブレット名に、そのキャッシュ制約条件を割り当てます。
サブ要素
次の表は、cache-mapping 要素のサブ要素を示します。左の列にサブ要素名、中央の列に必要指定数、右の列に要素の説明を示します。
   cache-mapping のサブ要素
要素
必要指定数
説明
servlet-name または url-pattern が 1 個必要
サーブレットの名前
servlet-name または url-pattern が 1 個必要
キャッシュを有効にする、サーブレットの URL パターン
timeout、refresh-field、http-method、key-field、および constraint-field を使用しない場合は必須
親要素 cache-mapping で使用されている cache-helper の name
cache-helper-ref を使用しない場合、0 個または 1 個
エントリが作成または更新された時点からキャッシュ内に保持される最大期間を秒単位で指定する。cache-mapping ごとに固有の値
cache-helper-ref を使用しない場合、0 個または 1 個
アプリケーションコンポーネントでプログラムによるキャッシュエントリの更新ができるようにするフィールドを指定する
cache-helper-ref を使用しない場合、0 個以上
キャッシュに使用できる HTTP メソッド
cache-helper-ref を使用しない場合、0 個以上
キャッシュエントリの検索や抽出に使用されるキーのコンポーネントを指定する
cache-helper-ref を使用しない場合、0 個以上
特定の url-pattern または servlet-name に対するキャッシュ制約条件を指定する
属性
なし
url-pattern
キャッシュを有効にする、サーブレットの URL パターンを指定するデータです。指定できるパターンについては、サーブレット仕様バージョン 2.3 の SRV. 11.2 節を参照してください。
サブ要素
なし
属性
なし
cache-helper-ref
親要素 cache-mapping で使用されている cache-helper の name を指定するデータです。
サブ要素
なし
属性
なし
timeout
エントリが作成または更新された時点からキャッシュ内に保持される最大期間を秒単位で指定するデータです。cache-mapping ごとに固有の値です。この要素を指定しない場合、デフォルトとして cache 要素の timeout 属性の値が使用されます。
サブ要素
なし
属性
次の表は、timeout 要素の属性を示します。左の列に属性の名前、中央の列にデフォルト値、右の列にその属性の説明を示します。
refresh-field
アプリケーションコンポーネントでプログラムによるキャッシュエントリの更新ができるようにするフィールドを指定します。
サブ要素
なし
属性
次の表は、refresh-field 要素の属性を示します。左の列に属性の名前、中央の列にデフォルト値、右の列にその属性の説明を示します。
http-method
キャッシュに使用できる HTTP メソッドを指定するデータです。デフォルトは、GET です。
サブ要素
なし
属性
なし
key-field
キャッシュエントリの検索や抽出に使用されるキーのコンポーネントを指定します。Web コンテナは、この名前のパラメータ (フィールド) を指定された範囲内で検索します。
この要素が存在しない場合、Web コンテナはサーブレットパスを使用します。サーブレットパスは、現在の要求をアクティブにしたサーブレットマッピングに対応するパスセクションです。サーブレットパスの詳細については、サーブレット仕様バージョン 2.3 の SRV 4.4 節を参照してください。
サブ要素
なし
属性
次の表は、key-field 要素の属性を示します。左の列に属性の名前、中央の列にデフォルト値、右の列にその属性の説明を示します。
constraint-field
特定の url-pattern または servlet-name に対するキャッシュ制約条件を指定します。
応答をキャッシュするにはすべての constraint-field 制約を渡す必要があります。value 制約がある場合、少なくともその 1 つを渡す必要があります。
サブ要素
次の表は、constraint-field 要素のサブ要素を示します。左の列にサブ要素名、中央の列に必要指定数、右の列に要素の説明を示します。
   constraint-field のサブ要素
要素
必要指定数
説明
0 または 1 個以上
パラメータの値と比較する条件値
属性
次の表は、constraint-field 要素の属性を示します。左の列に属性の名前、中央の列にデフォルト値、右の列にその属性の説明を示します。
   constraint-field の属性
属性
デフォルト値
説明
name
なし
名前を指定する
scope
request.parameter
(省略可能) 指定したパラメータの有効な範囲を指定する。指定できる値は、context.attribute、request.header、request.parameter、request.cookie、request.attribute、および session.attribute
cache-on-match
true
(省略可能) true を指定すると、条件に一致する応答がキャッシュされる。value サブ要素にある同じ属性よりも優先される
cache-on-match-failure
false
(省略可能) true を指定すると、条件に一致しない応答がキャッシュされる。value サブ要素にある同じ属性よりも優先される
value
入力パラメータの値と比較する条件値を指定するデータです。比較では、大文字と小文字が区別されます。次に例を示します。
<value match-expr="in-range">1-60</value>
サブ要素
なし
属性
次の表は、value 要素の属性を示します。左の列に属性の名前、中央の列にデフォルト値、右の列にその属性の説明を示します。
クラスローダーに関する要素
クラスローダーに関する要素は次のとおりです。
class-loader
Web モジュールのクラスローダーを設定します。
サブ要素
なし
属性
次の表は、class-loader 要素の属性を示します。左の列に属性の名前、中央の列にデフォルト値、右の列にその属性の説明を示します。
JSP に関する要素
JSP に関する要素は次のとおりです。
jsp-config
JSP の設定情報を指定します。
サブ要素
次の表は、jsp-config 要素のサブ要素を示します。左の列にサブ要素名、中央の列に必要指定数、右の列に要素の説明を示します。
   jsp-config のサブ要素
要素
必要指定数
説明
0 または 1 個以上
プロパティを指定する
属性
なし
プロパティ
次の表は、jsp-config 要素のプロパティを示します。左の列にプロパティの名前、中央の列にデフォルト値、右の列にそのプロパティの説明を示します。
   jsp-config のプロパティ
プロパティ名
デフォルト値
説明
ieClassId
clsid:8AD9C840-044E-11D1-B3E9-00805F499D93
Internet Explorer の Java プラグイン COM クラス ID。<jsp:plugin> タグによって使われる
javaCompilerPlugin
組み込みの JDK コンパイラ (javac)
使用する Java コンパイラプラグインの完全修飾クラス名。デフォルトのコンパイラを使用する場合は不要
たとえば、JSP ページの jikes コンパイラを使用するには、javaCompilerPlugin プロパティの値を org.apache.jasper.compiler.JikesJavaCompiler に設定し、javaCompilerPath プロパティの値が jikes 実行可能ファイルを指すように設定する
javaCompilerPath
なし
jikes など、アウトプロセス Java コンパイラの実行可能ファイルへのパスを指定する。デフォルトコンパイラの場合は無視される。javaCompilerPlugin を指定した場合のみ、このプロパティを設定する必要がある
javaEncoding
UTF8
生成された サーブレットをエンコードする方法を指定する。サーブレットをコンパイルする Java コンパイラにもこのエンコードする方法が渡される。デフォルトでは、コンテナは UTF8 の使用を試みる。これに失敗すると、javaEncoding の値の使用を試みる
使用できるエンコードについては、次の Web サイトを参照
http://java.sun.com/j2se/1.4/docs/guide/int l/encoding.doc.html
classdebuginfo
false
生成された Java サーブレットをコンパイルするときにデバッグオプション (javac の場合は -g ) を設定するかどうかを指定する
keepgenerated
true
true を設定すると、生成された Java ファイルが保存される。false を設定すると、Java ファイルは削除される
largefile
false
true を設定すると、JSP ファイルのコンパイル時に、静的 HTML が別のデータファイルに格納される。生成される サーブレットのサイズを最小限に抑えることができるため、JSP が非常に大きい場合に役立つ
mappedfile
false
true を設定すると、各 HTML 行の write 呼び出しと、JSP ファイル内での各行の位置を記述するコメントが生成される。デフォルトでは、隣接した write 呼び出しは、すべて結合され、位置のコメントは生成されない
scratchdir
Web アプリケーションのデフォルトの作業ディレクトリ
生成されたコードを格納するために作成された作業ディレクトリ
reload-interval
0
JSP ファイルの変更をチェックする周期を秒単位で指定する。この値に 0 を設定すると、要求のたびに JSP の変更がチェックされる。この値を -1 に設定すると、JSP の変更および再コンパイルのチェックが無効になる
国際化に関する要素
国際化に関する要素は次のとおりです。
locale-charset-info
アプリケーションの国際化の設定に関する情報を指定します。
サブ要素
次の表は、locale-charset-info 要素のサブ要素を示します。左の列にサブ要素名、中央の列に必要指定数、右の列に要素の説明を示します。
   locale-charset-info のサブ要素
要素
必要指定数
説明
1 個以上
文字セットにロケールとエージェントを割り当てる
0 または 1 個
Web コンテナでこの Web アプリケーションのフォームからパラメータをデコードする方法を、隠しフィールドの値に従って決定する
属性
次の表は、locale-charset-info 要素の属性を示します。左の列に属性の名前、中央の列にデフォルト値、右の列にその属性の説明を示します。
   locale-charset-info の属性
属性
デフォルト値
説明
default-locale
なし
デフォルトのロケールを指定する
locale-charset-map
文字セットにロケールとエージェントを割り当てます。
使用できるエンコードについては、次の Web サイトを参照してください。
http://java.sun.com/j2se/1.4/docs/guide/intl/encoding.doc.html
サブ要素
次の表は、locale-charset-map 要素のサブ要素を示します。左の列にサブ要素名、中央の列に必要指定数、右の列に要素の説明を示します。
   locale-charset-map のサブ要素
要素
必要指定数
説明
0 または 1 個
マッピングの説明文を指定する
属性
次の表は、locale-charset-map 要素の属性を示します。左の列に属性の名前、中央の列にデフォルト値、右の列にその属性の説明を示します。
   locale-charset-map の属性
属性
デフォルト値
説明
locale
なし
ロケール名を指定する
agent
なし
(省略可能) アプリケーションサーバーと対話するクライアントの種類を指定する。特定のロケールについて、複数のエージェントで異なる優先文字セットを使用することもできる。この属性の値は、クライアントから送信された user-agent HTTP 要求ヘッダーの値と正確に一致する必要がある。詳細については、表「agent 属性値の例」を参照
charset
なし
文字セットを指定する
エージェントの例
次の表は、agent 属性値の例を示します。左の列にエージェント、右の列に対応する属性値を示します。
parameter-encoding
要求の content-type に charset が設定されていない場合に、Web コンテナが使用する文字エンコードを決定する隠しフィールドを指定します。このエンコードは、 request.getParameter を呼び出すためのパラメータをデコードするのに使用されます。
使用できるエンコードについては、次の Web サイトを参照してください。
http://java.sun.com/j2se/1.4/docs/guide/intl/encoding.doc.html
サブ要素
なし
属性
次の表は、parameter-encoding 要素の属性を示します。左の列に属性の名前、中央の列にデフォルト値、右の列にその属性の説明を示します。
   parameter-encoding の属性
属性
デフォルト値
説明
form-hint-field
なし
パラメータをエンコードする方法を指定するフォーム内の隠しフィールドの名前
Web モジュール XML ファイルのサンプル
この節には次の項目があります。
web.xml ファイルのサンプル
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC '-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN' 'http://java.sun.com/j2ee/dtds/web-app_2_2.dtd'>
<web-app>
<display-name>webapps-simple</display-name>
<description>
The jakarta-tomcat-4.0.3 sample apps ports over to S1AS.
</description>
<distributable></distributable>
<servlet>
<servlet-name>HelloWorldExample</servlet-name>
<servlet-class>
samples.webapps.simple.servlet.HelloWorldExample
</servlet-class>
</servlet>
<servlet>
<servlet-name>RequestHeaderExample</servlet-name>
<servlet-class>
samples.webapps.simple.servlet.RequestHeaderExample
</servlet-class>
</servlet>
<servlet>
<servlet-name>SnoopServlet</servlet-name>
<servlet-class>
samples.webapps.simple.servlet.SnoopServlet
</servlet-class>
</servlet>
<servlet>
<servlet-name>servletToJsp</servlet-name>
<servlet-class>
samples.webapps.simple.servlet.servletToJsp
</servlet-class>
</servlet>
<servlet>
<servlet-name>RequestInfoExample</servlet-name>
<servlet-class>
samples.webapps.simple.servlet.RequestInfoExample
</servlet-class>
</servlet>
<servlet>
<servlet-name>SessionExample</servlet-name>
<servlet-class>
samples.webapps.simple.servlet.SessionExample
</servlet-class>
</servlet>
<servlet>
<servlet-name>CookieExample</servlet-name>
<servlet-class>
samples.webapps.simple.servlet.CookieExample
</servlet-class>
</servlet>
<servlet>
<servlet-name>RequestParamExample</servlet-name>
<servlet-class>
samples.webapps.simple.servlet.RequestParamExample
</servlet-class>
</servlet>
<servlet>
<servlet-name>SendMailServlet</servlet-name>
<servlet-class>
samples.webapps.simple.servlet.SendMailServlet
</servlet-class>
</servlet>
<servlet>
<servlet-name>JndiServlet</servlet-name>
<servlet-class>
samples.webapps.simple.servlet.JndiServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorldExample</servlet-name>
<url-pattern>/helloworld</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>RequestHeaderExample</servlet-name>
<url-pattern>/helloworld</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>SnoopServlet</servlet-name>
<url-pattern>/snoop</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>servletToJsp</servlet-name>
<url-pattern>/servletToJsp</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>RequestInfoExample</servlet-name>
<url-pattern>/requestinfo</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>SessionExample</servlet-name>
<url-pattern>/session</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>CookieExample</servlet-name>
<url-pattern>/cookie</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>RequestParamExample</servlet-name>
<url-pattern>/requestparam</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>SendMailServlet</servlet-name>
<url-pattern>/SendMailServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>JndiServlet</servlet-name>
<url-pattern>/JndiServlet</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<taglib>
<taglib-uri>
http://java.apache.org/tomcat/examples-taglib
</taglib-uri>
<taglib-location>
/WEB-INF/tlds/example-taglib.tld
</taglib-location>
</taglib>
<resource-ref>
<res-ref-name>mail/Session</res-ref-name>
<res-type>javax.mail.Session</res-type>
<res-auth>Container</res-auth>
</resource-ref>
<security-constraint>
<web-resource-collection>
<web-resource-name>Protected Area</web-resource-name>
<! -- 保護されるコンテキスト関連の URL -->
<url-pattern>/jsp/security/protected/*</url-pattern>
<! -- http メソッドを一覧表示する場合、これらのメソッドだけが保護される -->
<http-method>DELETE</http-method>
<http-method>GET</http-method>
<http-method>POST</http-method>
<http-method>PUT</http-method>
</web-resource-collection>
<auth-constraint>
<! -- リスト上のいずれかのロールを持つユーザーはこの領域にアクセス
できる --><role-name>tomcat</role-name>
<role-name>role1</role-name>
</auth-constraint>
</security-constraint>
<! -- 環境エントリの例 -->
<env-entry>
<description>
The maximum number of tax exemptions allowed to be set.
</description>
<env-entry-name>maxExemptions</env-entry-name>
<env-entry-value>15</env-entry-value>
<env-entry-type>java.lang.Integer</env-entry-type>
</env-entry>
<env-entry>
<env-entry-name>minExemptions</env-entry-name>
<env-entry-value>1</env-entry-value>
<env-entry-type>java.lang.Integer</env-entry-type>
</env-entry>
<env-entry>
<env-entry-name>foo/name1</env-entry-name>
<env-entry-value>value1</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
<env-entry>
<env-entry-name>foo/bar/name2</env-entry-name>
<env-entry-value>true</env-entry-value>
<env-entry-type>java.lang.Boolean</env-entry-type>
</env-entry>
<env-entry>
<env-entry-name>name3</env-entry-name>
<env-entry-value>1</env-entry-value>
<env-entry-type>java.lang.Integer</env-entry-type>
</env-entry>
<env-entry>
<env-entry-name>foo/name4</env-entry-name>
<env-entry-value>10</env-entry-value>
<env-entry-type>java.lang.Integer</env-entry-type>
</env-entry>
</web-app>
sun-web.xml ファイルのサンプル
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sun-web-app PUBLIC '-//Sun Microsystems, Inc.//DTD Sun ONE Application Server 7.0 Servlet 2.3//EN' 'http://www.sun.com/software/sunone/appserver/dtds/sun-web-app_2_3- 0.dtd'>
<sun-web-app>
<session-config>
<session-manager/>
</session-config>
<resource-ref>
<res-ref-name>mail/Session</res-ref-name>
<jndi-name>mail/Session</jndi-name>
</resource-ref>
<jsp-config/>
</sun-web-app>