Sun ONE Application Server 7 Web アプリケーション開発者ガイド |
Web アプリケーションこのmoduleでは、Sun ONE Application Server で Web アプリケーションがサポートされる仕組みについて説明します。この章には次の節があります。
- Web アプリケーションの概要
- Web アプリケーションの作成
- Web アプリケーションの配備
- Web アプリケーションのデバッグ
- 国際化に関する問題
- 仮想サーバー
- デフォルトの Web モジュール
- サーブレットと JSP のキャッシュ
- データベース接続プール
- Web コンテナの設定
- Web アプリケーションの例
Web アプリケーションの概要
Sun ONE Application Server 7 は Servlet 2.3 API 仕様をサポートしています。この仕様では、サーブレットや JSP を Web アプリケーションに組み込むことができます。
Web アプリケーションは、サーブレット、JavaServer Pages、HTML ドキュメント、および、イメージファイルや圧縮アーカイブなどのデータを含むその他の Web リソースの集まりです。Web アプリケーションは、アーカイブ (WAR ファイル) にパッケージされている場合とオープンディレクトリ構造内に置かれている場合があります。
次の図に、J2EE 環境の詳細を示します。Web アプリケーションはプレゼンテーションレイヤにあります。Web コンテナ内で 2 つの Web アプリケーションが実行されています。1 つは EJB モジュールとコネクタを持つ完全なアプリケーションの一部として、もう 1 つは個別に配備された Web モジュールとして実行されています。
   J2EE 環境における Web アプリケーション
また、Sun ONE Application Server 7 は、J2EE アプリケーションコンポーネントではない SHTML と CGI もサポートしています。
この節では、次のトピックについて説明します。
サーブレット
Java サーブレットはサーバーサイドの Java プログラムであり、クライアントの要求に応じてコンテンツを生成するためにアプリケーションサーバーで実行できます。サーブレットは、ユーザーインタフェースを使わずにサーバーサイドで実行されるアプレットと考えることもできます。サーブレットは URL を通して呼び出されるか、ほかのサーブレットから呼び出されます。
Sun ONE Application Server 7 は Java サーブレット仕様のバージョン 2.3 をサポートしています。
注 サーブレット API のバージョン 2.3 は、バージョン 2.1 および 2.2 との完全な下位互換性を実現しています。このため、既存のすべてのサーブレットは変更や再コンパイルなしで機能します。
サーブレットの開発には Sun Microsystems の Java サーブレット API を使用します。Java サーブレット API の使用法については、次の Web サイトで Sun Microsystems が提供しているマニュアルを参照してください。
http://java.sun.com/products/servlet/index.html
Sun ONE Application Server でのサーブレットの開発については、「サーブレットの使用法」を参照してください。
JavaServer Pages
Sun ONE Application Server 7 は JavaServer Pages (JSP) 仕様のバージョン 1.2 をサポートしています。
JSP は HTML ページによく似たページであり、Web ブラウザで表示できます。ただし、HTML タグのほかに、一式の JSP タグやディレクティブに Java コードを組み合わせて使用できるため、動的コンテンツを組み込んだ Web ページを設計できます。これらの追加機能により、プロパティ値を表示したり、簡単な条件式を使用したりできます。
JSP の利点の 1 つは、HTML ページと類似していることです。HTML タグと JSP タグを使って簡単に Web ページを設計し、アプリケーションサーバーに置くことができます。ページは配備されるときに自動的にコンパイルされます。Web ページの設計に必要な Java クラスと Java コンパイラについての知識は最小限で済みます。
ただし、Sun ONE Application Server は JSP を事前にコンパイルすることをサポートしており、本稼動サーバー用には事前にコンパイルを行うことをお勧めします。
JSP ページでは、次の方法ですべての Java 機能を利用することができます。
- ページ内でスクリプトレットに直接 Java コードを埋め込む
- JavaBeans を利用する
- Java サーブレットが含まれているサーバーサイドタグを使用する
Beans もサーブレットもコンパイルを必要とする Java クラスですが、Java プログラマがその定義とコンパイルを行い、Bean やサーブレットへのインタフェースを公開できます。JSP ページからコンパイル済みの Bean やサーブレットを利用して Web ページを設計できます。
Sun ONE Application Server 7 は JSP タグライブラリおよび移植可能な標準タグをサポートしています。
JSP の作成方法については、Sun Microsystems の JavaServer Page に関する次の Web サイトを参照してください。
http://java.sun.com/products/jsp/index.html
Java Beans については、Sun Microsystems の JavaBeans に関する次の Web サイトを参照してください。
http://java.sun.com/beans/index.html
Sun ONE Application Server での JSP の開発については、「JavaServer Pages の使用法」を参照してください。
SHTML
HTML ファイルには、サーバーで実行されるタグを含めることができます。SSI などの標準サーバーサイドタグをサポートするほかに、Sun ONE Application Server 7 は、サーブレットを埋め込んだり、自身のサーバーサイドタグを定義したりすることができます。詳細については、「サーバーでパースされる HTML の使用法」を参照してください。
CGI
CGI (Common Gateway Interface) プログラムは、サーバー上で動作し、クライアントの要求に対する応答を生成します。CGI プログラムは、シェルスクリプトとして、C、C++、Java、Perl などさまざまな言語で記述されます。CGI プログラムは、URL を呼び出すことにより、起動します。Sun ONE Application Server は、CGI バージョン 1.1 仕様に準拠しています。詳細については、「CGI の使用法」を参照してください。
Web アプリケーションの作成
Web アプリケーションを作成するには、次の手順を実行します。
- Web アプリケーションファイル全体用のディレクトリを作成します。これは、Web アプリケーションのドキュメントルートになります。
- 必要な HTML ファイル、イメージファイルおよびその他の静的コンテンツを作成します。これらのファイルをドキュメントルートディレクトリまたはサブディレクトリに置き、ほかのアプリケーション部分からアクセスできるようにします。
- 必要な JSP ファイルを作成します。詳細については、「JavaServer Pages の使用法」を参照してください。
- 必要なサーブレットを作成します。詳細については、「サーブレットの使用法」を参照してください。
- サーブレットをコンパイルします。JSP のプリコンパイルについては、「JSP のコンパイル : コマンド行コンパイラ」を参照してください。
- Web アプリケーションを編成します。詳細については、「Web アプリケーションの構造」を参照してください。
- 配備記述子ファイルを作成します。詳細については、「Web モジュールの構築と配備」を参照してください。
- 必要であれば、WAR ファイルに Web アプリケーションをパッケージ化します。これはオプションです。次に例を示します。
jar -cvf module_name.war *
- Web アプリケーションを配備します。詳細については、「Web モジュールの構築と配備」を参照してください。
Web アプリケーションは手動で、または Sun ONE Studio 4 を使って作成できます。Sun ONE Studio の詳細については、Sun ONE Studio 4, Enterprise Edition のチュートリアルを参照してください。
Web アプリケーションの配備
Web アプリケーションの配備記述子ファイルは、配備時に Sun ONE Application Server の管理インタフェースで作成されます。また、手作業で作成することもできます。これらの記述子ファイルは、Web アプリケーション のアーカイブ (.war) ファイル内にパッケージ化されています。アーカイブファイルには、メタデータとともに、サーブレットや JSPを識別しそのアプリケーションのロールを確立する情報が含まれています。これらの記述子ファイルの詳細については、「Web モジュールの構築と配備」を参照してください。
Web アプリケーションのデバッグ
アプリケーションのデバッグについては、『Sun ONE Application Server 開発者ガイド』を参照してください。
国際化に関する問題
ここでは、次の対象に適用される国際化について説明します。
サーバー
Sun ONE Application Server 全体のデフォルトロケールを設定するには、次のどちらかの手順を実行します。デフォルトロケールにより、管理インタフェースやログなどのロケールが決まります。
- 管理インタフェースのサーバーインスタンスページに移動し、「詳細」タブをクリックします。「ロケール」フィールドに値を入力し、「保存」ボタンをクリックします。次に「一般」タブをクリックし、「変更の適用」ボタンを選択します。
- server.xml ファイルで server 要素の locale 属性を設定し、サーバーを再起動します。このファイルの詳細については、『Sun ONE Application Server 管理者用設定ファイルリファレンス』を参照してください。
サーブレット
ここでは、サーブレット要求やサーブレット応答の文字エンコードを Sun ONE Application Server がどのように判断するかについて説明します。
使用できるエンコードについては、次の Web サイトを参照してください。
http://java.sun.com/j2se/1.4/docs/guide/intl/encoding.doc.html
サーブレット要求
サーバーは、サーブレット要求を処理するとき、次の優先順位に従って要求の文字エンコードを判断します。
- setCharacterEncoding() メソッド
- sun-web.xml ファイルの parameter-encoding 要素で指定されている、フォーム内の隠しフィールド。詳細については、「parameter-encoding」を参照
- sun-web.xml ファイルの locale-charset-info 要素で設定されている文字エンコード。この要素の詳細については、「国際化に関する要素」を参照
- デフォルトの ISO-8859-1
サーブレット応答
サーバーは、サーブレット応答を処理するとき、次の優先順位に従って応答の文字エンコードを判断します。
- setContentType() メソッド
- setLocale() メソッド
- デフォルトの ISO-8859-1
JSP
使用できるエンコードについては、次の Web サイトを参照してください。
http://java.sun.com/j2se/1.4/docs/guide/intl/encoding.doc.html
JSP の文字エンコードを設定するには、page 指令を使用します。次に例を示します。
<%@ page contentType="text/html; charset=SJIS" %>
contentType 属性は、次の項目を定義します。
- JSP ページの文字エンコード
- JSP ページ応答の文字エンコード
- JSP ページ応答の MIME タイプ
デフォルト値は text/html; charset=ISO-8859-1 です。
サーバーは、JSP ページを処理するとき、次の優先順位に従って文字エンコードを判断します。
- JSP ファイルの page 指令と contentType 属性
- デフォルトの ISO-8859-1
要求時の入力に応じて、異なるコンテンツ形式と文字エンコードでコンテンツを配信できるように設計されている JSP ページもあります。コンテンツ形式の動的設定は、response.setContentType() の呼び出しに依存しています。応答ストリームにコンテンツが送られていなければ、いつでもこのメソッドを呼び出すことができます。
仮想サーバー
仮想サーバー (仮想ホスト) は、特定の URL 用にコンテンツを提供する仮想 Web サーバーです。複数の仮想サーバーが、同一または異なったホスト名、ポート番号、IP アドレスなどを使ってコンテンツを提供できます。HTTP サービスは、URL に従って、受信する Web 要求を異なった仮想サーバーに送信できます。
Sun ONE Application Server の最初のインストール時に、デフォルトの仮想サーバーが作成されます。新しく作成した HTTP リスナーごとにデフォルトの仮想サーバーを割り当てることもできます。詳細については、『Sun ONE Application Server 管理者ガイド』を参照してください。
仮想サーバーには、Web アプリケーションや、Web コンポーネントを含む J2EE アプリケーションを割り当てることができます。仮想サーバーは、次のどちらかの方法で割り当てることができます。
管理インタフェースの使用
「Web アプリケーションの配備」の手順に従って、配備時に Web モジュールに仮想サーバーを割り当てることができます。
管理インタフェースを使って仮想サーバーのデフォルトの Web モジュールを設定するには、次の手順を実行します。
- Web アプリケーションまたは J2EE アプリケーションを配備します。詳細については、「Web アプリケーションの配備」を参照してください。
- サーバーインスタンスの下の HTTP Server コンポーネントを開きます。
- HTTP Server コンポーネントの下にある Virtual Servers コンポーネントを開きます。
- Web アプリケーションを割り当てる仮想サーバーを選択します。
- 「デフォルト Web モジュール」ドロップダウンリストから Web モジュールを選択します。
- 「Save」ボタンを選択します。
- サーバーインスタンスページに移動し、「変更の適用」ボタンを選択します。
詳細については、「デフォルトの Web モジュール」を参照してください。
server.xml ファイルの編集
Web モジュールをアプリケーションの一部として配備する場合は、配備時にそれを表す j2ee-application 要素が server.xml 内に作成されます。Web モジュールを個別モジュールとして配備する場合は、配備時にそれを表す web-module 要素が server.xml 内に作成されます。j2ee-application 要素と web-module 要素はどちらも virtual-servers 属性を持っています。この属性は仮想サーバー ID のリストを指定します。デフォルトでは、virtual-servers 属性は空です。つまり、Web アプリケーションはすべての仮想サーバーに割り当てられます。
server.xml 内の virtual-server 要素はそれぞれ default-web-module 属性を持っています。この属性を使って、各仮想サーバーにデフォルトの Web モジュールを設定できます。デフォルトの仮想サーバーのデフォルトの Web モジュールは、インストール時に指定されます。詳細については、「デフォルトの Web モジュール」を参照してください。
server.xml と仮想サーバーの詳細については、『Sun ONE Application Server 管理者用設定ファイルリファレンス』を参照してください。
デフォルトの Web モジュール
デフォルトの仮想サーバーと、新しく作成した個々の仮想サーバーに、デフォルト Web モジュールを割り当てることができます。詳細については、「仮想サーバー」を参照してください。仮想サーバーのデフォルトの Web モジュールにアクセスするには、ブラウザで仮想サーバーの URL を指定します。コンテキストルートは指定しません。次に例を示します。
http://myvserver:3184
仮想サーバーにデフォルト Web モジュールを割り当てない場合、仮想サーバーは HTML または JSP コンテンツをドキュメントルート (通常 instance_dir/docroot) から提供します。この HTML または JSP コンテンツにアクセスするには、ブラウザで仮想サーバーの URL を指定します。コンテキストルートではなくターゲットファイルを指定してください。次に例を示します。
http://myvserver:3184/hellothere.jsp
サーブレットと JSP のキャッシュ
Sun ONE Application Server には、同じサーブレットや JSP への呼び出しをすばやく実行するために、サーブレットや JSP の結果をキャッシュする機能があります。Sun ONE Application Server は、要求の結果を一定の期間キャッシュします。そのため、ほかのデータ呼び出しがあったときに、Sun ONE Application Server は、再びオペレーションを実行する代わりに、キャッシュしておいたデータを返します。たとえば、5 分ごとに更新される株式相場をサーブレットが返す場合、キャッシュが 300 秒後に期限切れになるように設定します。
サーブレット関連の応答キャッシュの詳細については、「サーブレットの結果のキャッシュ」を参照してください。JSP のキャッシュの詳細については、「JSP キャッシュ」を参照してください。
データベース接続プール
データベース接続プールにより、サーブレットや JSP とデータベースとの対話のパフォーマンスが向上します。接続プールをサポートしている JDBC 2.0 互換のドライバとしては、PointBase (Sun ONE Application Server に付属。ただし Solaris 9 バンドル版のインストールを除く)、Oracle 8i アップデート、CloudScape 3.0 などいくつかあります。JDBC の詳細については、『Sun ONE Application Server Developer's Guide to J2EE Features and Services』を参照してください。
Web コンテナの設定
Web コンテナでサーバー全体のログを記録するには、次のどちらかの方法で設定できます。
- 管理インタフェースの使用。詳細については、『Sun ONE Application Server 管理者ガイド』を参照
- server.xml ファイルの編集。詳細については、『Sun ONE Application Server 管理者用設定ファイルリファレンス』を参照
Web アプリケーションの例
Sun ONE Application Server には、参照および配備可能なサンプルアプリケーションが付属しています。これらは、install_dir/samples/webapps ディレクトリ内に置かれています。各サンプルには専用のマニュアルが用意されています。