• 検索結果がありません。

Web アプリケーションの実行機能

Web コンテナでは,Web アプリケーションを実行できます。Web アプリケーションとは,Web コンテ ナ上で動作するサーバプログラムのことです。この節では,Web アプリケーションの実行機能について説 明します。

この節の構成を次の表に示します。

表 2‒2 この節の構成(Web アプリケーションの実行機能)

分類 タイトル 参照先

解説 Web アプリケーションのデプロイとアンデプロイ 2.2.1

注意事項 Web アプリケーションのデプロイとアンデプロイの注意事項 2.2.2

注 「実装」,「設定」および「運用」について,この機能固有の説明はありません。

通常の Web サーバは,固定された HTML ファイルだけを送信します。Web コンテナが機能することに よって,Web コンテナ上で Web アプリケーションを実行し,Web クライアントから受け取ったデータ を処理したり,その処理の結果に応じて異なる Web ページを生成したりできるようになります。

Web アプリケーションは,主に,サーブレットおよび JSP と呼ばれる 2 種類の技術を使用して開発された アプリケーションです。サーブレットは Java プログラムを使い,HTML を生成したり,Web クライアン トから受け取った情報を処理したりする技術です。JSP(JavaServer Pages)はサーブレット技術を基盤 に,HTML ページの中にタグや Java プログラムを埋め込むことで,動的に Web 画面を生成する技術で す。JSP は JSP コンパイラによって,一度 Java で記述されたサーブレットプログラムに変換され,そのあ と,Java コンパイラによってコンパイル,実行されます。

アプリケーションサーバの Web コンテナでは,Java Servlet 3.0 仕様,および JavaServer Pages(JSP)

2.1 仕様に準拠した Web アプリケーションを実行できます。また,JSP 2.2 仕様については,新規に追加 されたタグは無視されますが,JSP 2.2 仕様の web.xml を読み込むことができます。Web アプリケーショ ン実行機能の詳細については,Java Servlet Specification v3.0,および JavaServer Pages Specification v2.2 を参照してください。

なお,Web コンテナを使用して Web アプリケーションを実行するには,Web サーバとして HTTP Server または Microsoft IIS を使用するか,インプロセス HTTP サーバを使用する必要があります。

参考

以前のバージョンのアプリケーションサーバで実行できるアプリケーションは,本バージョンでも実行できま す。

2.2.1 Web アプリケーションのデプロイとアンデプロイ

WAR 形式の Web アプリケーションは,次のどちらかの方法でデプロイすることによって,実行可能な状 態になります。

• Web アプリケーションを EAR 形式にパッケージ化してアーカイブ形式の J2EE アプリケーション,ま たは展開ディレクトリ形式の J2EE アプリケーションとしてインポートします。

• WAR ファイルまたは WAR ディレクトリを指定して,Web アプリケーションを単体でインポートし ます。

単体でインポートした Web アプリケーションを WAR アプリケーションといいます。WAR アプリケー ションについては,マニュアル「アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)」の

「13.9 WAR アプリケーション」を参照してください。

実行できる J2EE アプリケーションの形式については,マニュアル「アプリケーションサーバ 機能解説 基 本・開発編(コンテナ共通機能)」の「13.2 実行できる J2EE アプリケーションの形式」を参照してくださ い。

複数の Web アプリケーションのデプロイを実行した場合,Web アプリケーションごとに独立のクラス ローダが作成されます。このため,異なる Web アプリケーションで同一のクラス名のクラス(Login サー ブレットなど)を用いた場合でも,別々のクラスローダ上で独立に扱われます。

なお,J2EE アプリケーションとしてデプロイした Web アプリケーションをアンデプロイする場合は,

J2EE アプリケーションごとアンデプロイします。WAR 単位でアンデプロイすることはできません。

2.2.2 Web アプリケーションのデプロイとアンデプロイの注意事項

ここでは,Web アプリケーションをデプロイ,またはアンデプロイする場合の留意事項について説明しま す。

(1) サーブレット/JSP のデフォルトマッピングについて

クライアントがリクエストする URL に対してどのサーブレットが呼び出されるかの設定をサーブレット マッピングといいます。Servlet 仕様では,サーブレットマッピングを DD(WEB-INF/web.xml)内に記 述するように求めています。

これに対して,Web コンテナでデフォルトで定義されているマッピングをデフォルトマッピングといいま す。Web コンテナでは,次に示すマッピングをデフォルトで定義しています。

表 2‒3 Web コンテナで定義されているサーブレット/JSP のデフォルトマッピング

URL 取り扱い

*.jsp JSP ファイルとして取り扱われます。

*.jspx Servlet 2.4 以降の仕様に準拠した Web アプリケーションについては,JSP ドキュメントとして取り扱わ れます。なお,Servlet 2.2 および Servlet 2.3 仕様に準拠した Web アプリケーションの場合は静的コン テンツとして扱われます。

/servlet/* WEB-INF/classes 以下,または WEB-INF/lib 以下に配置された JAR ファイルに含まれているサーブ レットのクラスが実行されます。実行するサーブレットは,サーブレット名から検索されます。

URL に指定された「*」の部分がサーブレット名として定義されていない場合,サーブレットクラスが検 索されます。URL の「*」の部分には,サーブレットの完全修飾クラス名,または web.xml で定義した サーブレット名を指定できます。

サーブレットの完全修飾クラス名を指定した場合,指定したサーブレットが実行されます。サーブレット 名を指定した場合,web.xml で定義したサーブレットが実行されます。

なお,サーブレットは web.xml にマッピング定義が必要なため,web.xml が省略された Web アプリケーションの場 合,サーブレットのデフォルトマッピングは有効になりません。

サーブレットのデフォルトマッピングについては,簡易構築定義ファイルの論理 J2EE サーバ(j2ee-server)の<configuration>タグ内で,次のパラメタに有効または無効を指定します。デフォルトの設定で は,無効になっています。

webserver.container.servlet.default_mapping.enabled

簡易構築定義ファイル,および指定するパラメタの詳細については,マニュアル「アプリケーションサー バ リファレンス 定義編(サーバ定義)」の「4.6 簡易構築定義ファイル」を参照してください。

(2) DD(WEB-INF/web.xml)内のタグが設定されていない場合のデフォルト値について

Web コンテナでは,次に示すタグが DD(WEB-INF/web.xml)に設定されていない場合,次に示すデ フォルト値を使用します。

表 2‒4 DD(WEB-INF/web.xml)内のタグが設定されていない場合のデフォルト値

タグ名 設定されていない場合のデフォルト値

welcome-file-list <welcome-file-list>

<welcome-file>

index.jsp </welcome-file>

<welcome-file>

index.html </welcome-file>

<welcome-file>

index.htm </welcome-file>

</welcome-file-list>

session-timeout 30

mime-mapping 拡張子と MIME タイプとの対応づけ。

DD(WEB-INF/web.xml)にこれらのタグを設定している場合には,次の設定となります。

• <welcome-file-list>タグに設定された値で,デフォルト値を上書きします。

• <session-timeout>タグに設定された値で,デフォルト値を上書きします。

• <mime-mapping>タグに定義した拡張子単位の設定で,デフォルト値を拡張子単位に上書きします。

なお,DD(WEB-INF/web.xml)の mime-mapping タグにデフォルトで設定されている拡張子と MIME タイプの対応づけについては,マニュアル「アプリケーションサーバ リファレンス 定義編(サーバ定義)」

の「付録 B.1 拡張子と MIME タイプの対応づけ」を参照してください。

(3) サーブレットのインスタンス作成数

Web アプリケーション単位に同じクラスのサーブレットのインスタンスを一つ作成します。

SingleThreadModel を継承したサーブレットのインスタンスも,一般のサーブレットと同様に Web アプ リケーション単位に一つ作成します。

ただし,同一のサーブレットおよび JSP に対して,デフォルトのマッピングと DD に記述したマッピング の両方でアクセスすると,インスタンスは次のように生成されます。

表 2‒5 デフォルトマッピングと DD に記述したマッピングの両方でアクセスする場合のインスタンスの 生成

URL インスタンス

*.jsp DD に記述したマッピングでアクセスした場合とは別のインスタンスが生成されます。

*.jspx

/servlet/* • サーブレットの完全修飾クラス名を指定した場合

DD に記述したマッピングでアクセスした場合とは別のインスタンスが生成されます。

• web.xml で定義したサーブレット名を指定した場合

URL インスタンス

/servlet/* DD に記述したマッピングでアクセスした場合と同じインスタンスが生成されます。

また,SingleThreadModel を継承した単一のサーブレットに対して,Web アプリケーション単位にリク エストが並列に複数到着した場合,各スレッドがオーバラップしないで 1 スレッドずつ順に実行するよう に制御します。

(4) サーブレットの init メソッドおよび service メソッドの実行のタイミング

サーブレットの init メソッドおよび service メソッドの実行のタイミングは,デフォルトマッピングかサー ブレットマッピングかによって異なります。

• デフォルトマッピングでサーブレットにアクセスした場合

サーブレットの init メソッドおよび service メソッドは,該当する URL にマッピングされているフィ ルタの処理の延長で,実行されます。

• サーブレットマッピングでサーブレットにアクセスした場合

init メソッドはフィルタの処理の前に,実行されます。service メソッドは,該当する URL にマッピン グされたフィルタの処理の延長で,実行されます。

(5) レスポンス送信時に使用されるサーブレットのバッファ

レスポンス送信時に使用されるサーブレットのバッファは,リクエスト処理スレッドの数だけ保持されま す。javax.servlet.ServletResponse の setBufferSize メソッドを使用してバッファサイズを変更する場合 は,バッファサイズ×リクエスト処理スレッド数分のメモリが確保されることを考慮した上で,メモリ使用 量を見積もってください。

(6) クエリ文字列の解析について

クエリ文字列は,URL の?マーク以降に,"名前=値"の組が一つ以上組み合わさって構成されます。

アプリケーションサーバでは,"名前=値"の部分に複数の"="がある場合,最初の"="より前の文字列が名 前,後ろの文字列が値となります。例えば,URL が「http://host/examples?a=b=c」の場合は,「名前

"a"の値は"b=c"」と解析されます。

Outline

関連したドキュメント