前へ 目次 索引 DocHome 次へ |
iPlanet Web Server, Enterprise Edition サーブレットに関するプログラマーズガイド |
第 2 章 Web アプリケーション
iPlanet Web Server 6.0 は、サーブレットおよび JSP の Web アプリケーションへの組み込みを可能にする Servlet 2.2 API 仕様をサポートしています。Web アプリケーションは、サーブレット、JSP (JavaServer Pages)、HTML ドキュメント、およびイメージファイルや圧縮アーカイブその他のデータをインクルードする Web リソースのコレクションです。 Web アプリケーションは、アーカイブ (WAR ファイル) にパッケージ化されているか、オープンディレクトリ構成になっています。 Web アプリケーションの詳細は、以下の Web サイトにある Servlet 2.2 API 仕様を参照してください。
http://java.sun.com/products/servlet/index.html
この章では、Web アプリケーションが iPlanet Web Server でサポートされる方法について説明します。この章は、以下の節から構成されています。
Web アプリケーションの構造
Web アプリケーションの構造
Web アプリケーションはディレクトリ構造になっていて、すべてマッピングからアプリケーションのドキュメントルート ( /catalog など) にアクセス可能です。 ドキュメントルートには、JSP ファイル、HTML ファイル、およびイメージファイルなどの静的ファイルがあります。ドキュメントルートの下にある特殊なディレクトリ WEB-INF には、アプリケーションの公開ドキュメントツリーにはない、アプリケーションに関連したファイルがすべて含まれています。 WEB-INF に含まれているファイルは、直接クライアントに提供することはできません。 WEB-INF の内容は次のとおりです。
/WEB-INF/web.xml : XML ベースの導入記述子。マッピング、初期設定パラメータ、セキュリティ制約など、Web アプリケーションの構成を指定する
WAR (Web アプリケーションのアーカイブ) ファイルには、完全な Web アプリケーションが圧縮されて入っています。iPlanet Web Server は、WAR ファイルのアプリケーションにはアクセスできません。 iPlanet Web Server が Web アプリケーションにアクセスするには、Web アプリケーション (wdeploy ユーティリティを使って導入) の圧縮を解除する必要があります。/WEB-INF/classes/* : サーブレットおよびユーティリティのクラスのディレクトリ
/WEB-INF/ lib/*.jar : サーブレット、Bean、その他のユーティリティのクラスが含まれる JAR ファイルのディレクトリ
Web アプリケーションの構成には次の 2 つが含まれています。
web.xml ファイル : 標準の Servlet 2.2 導入記述子。 各 Web アプリケーションには固有の web.xml ファイルがあります。 web.xml の詳細は、以下の Web サイトにある Servlet 2.2 API 仕様を参照してください。
web-apps.xmlファイル : iPlanet Web Server に固有のファイル。 各仮想サーバには固有の web-apps.xml ファイルがあり、このファイルによってその仮想サーバで実行されるすべてのアプリケーションが構成されます。
- http://java.sun.com/products/servlet/index.html
動的再構成 (DR)
Web アプリケーションに対して変更を行うときに、サーバを再起動する必要はありません。 変更は、web-apps.xml ファイルの class-loader 要素の reload-interval 属性で設定された頻度で、自動的に読み込み直されます。web-xml または web-apps.xml ファイルに対して変更を行うときも、サーバを再起動する必要はありません。 ただし、「Apply」リンクをクリックし、「Apply Changes」画面の「Load Configuration Files」ボタンをクリックして変更内容を適用する必要があります。
動的再構成の詳細は、iPlanet Web Server の『NSAPI プログラマーズガイド』の第 1 章「サーバの動作の基本」を参照してください。
Web アプリケーション、サーブレット、または JSP を追加または削除した場合は、サーバを再起動する必要があります。
web.xml ファイルについて
この節では、iPlanet Web Server 6.0 での web.xml ファイルの使用方法について説明します。
セキュリティ上の制約があって login-config 要素がない場合、または auth-method の指定がない場合は、auth-method はデフォルトで BASIC に設定されます。 BASIC 認証では、realm-name の指定がない場合、realm-name はデフォルトで iWS Web Container に設定されます。 auth-method が FORM でない場合、form-login-config 要素は指定した場合でも無視されます。
url-pattern の指定がない場合、制約は適用されません。 web-resource-collection 部分要素で http-method の指定がない場合、制約はすべての HTTP メソッドに適用されます。 user-data-constraint 部分要素で transport-guarantee の指定がない場合、デフォルトで NONE に設定されます。 auth-constraint 部分要素がない場合、または role-name の指定がない場合、アクセスは許可されません。
web.xml に session-timeout が指定されている場合、このタイムアウト値が web-apps.xml の session-manager 要素に指定されたすべての timeOut パラメータ値よりも優先して使用されます。 仮想サーバのすべての Web アプリケーションで使用する単一セッションマネージャを構成する場合は、web.xml で指定された値は、適用されません。 以下の場合にのみ適用されます。
仮想サーバのすべての Web アプリケーションに対してセッションマネージャを構成するわけではない (デフォルト動作)。各 Web アプリケーションには固有のセッションマネージャがある。
session-timeout 値が分単位で指定されるのに対して、session-manager timeOut パラメータは秒単位で指定されることに注意してください。仮想サーバ全体のセッションマネージャに加えて、Web アプリケーション固有のセッションマネージャを設定する。 この場合、Web アプリケーション固有のセッションマネージャの timeOut 値に対してだけ web.xml で指定された値が優先します。
セッションマネージャの詳細は、第 6 章「セッションマネージャ」を参照してください。
web-apps.xml ファイルおよび仮想サーバ
web-apps.xml ファイルでは、仮想サーバで実行される Web アプリケーションのコンテキストを定義します。 コンテキスト情報には、Web アプリケーションのコンテキストパスや、Web アプリケーションでセッション管理や認証を処理する方法など他のプロパティが設定されています。web-apps.xml ファイルは、標準の J2EE 導入記述子フォーマットである、 .dtd ファイルで指定された適正な .XML ドキュメントに準拠しています。 web-apps.xml ファイルでは、コンテキストパスおよび物理的位置によって Web アプリケーションが定義されています。
各 Web アプリケーションでは、Web アプリケーションの処理方法をカスタマイズする iPlanet Web Server 固有の構成要素を定義する場合もあります。 たとえば、Web アプリケーションでは、プラグイン可能なセッションマネージメントの定義や Java コンパイラの指定を行うことができます。 web-apps.xml ファイルを使うと、グローバル構成要素を定義して複数の Web アプリケーションで共有またはオーバーライドできます。
各 web-apps.xml ファイルは、仮想サーバを定義する server.xml ファイルから参照する必要があります。 server.xml の詳細は、iPlanet Web Server の『NSAPI プログラマーズガイド』を参照してください。
仮想サーバのデフォルトコンテキスト
新しい仮想サーバを作成すると、空の web-apps.xml ファイルが作成されます。 自動的に作成されるデフォルトコンテキストを使用するか、web-apps.xml ファイルを変更して独自のコンテキストを作成できます。servlets.properties ファイルがデフォルトの仮想サーバのサーバインスタンスの config ディレクトリにある場合、Web アプリケーションのコンテキストではなく iPlanet Web Server 4.x サーブレットのコンテキストが作成されます。 古いバージョンの構成の詳細は、第 8 章「古いバージョンのサーブレットおよび JSP の構成」を参照してください。
server.xml ファイルの例
server.xml ファイルには、Web アプリケーションに関連のある 2 つの変数、webapps_enable と webapps_file が指定されています。
仮想サーバ用の Web アプリケーションを有効または無効にする true または false 変数。 仮想サーバの定義にない場合、Web アプリケーションはデフォルトで有効になります。
以下の server.xml ファイルでは上記の変数が使用されています。
<?xml version="1.0" encoding="UTF-8"?>
<!-- declare any variables to be used in the obj.conf file in the
ATTLIST below -->
<!DOCTYPE SERVER SYSTEM "server.dtd" [
<!ATTLIST VARS
docroot CDATA #IMPLIED
adminusers CDATA #IMPLIED
webapps_file CDATA #IMPLIED
webapps_enable CDATA #IMPLIED
accesslog CDATA #IMPLIED
user CDATA #IMPLIED
group CDATA #IMPLIED
chroot CDATA #IMPLIED
dir CDATA #IMPLIED
nice CDATA #IMPLIED
>
]>
<SERVER legacyls="ls1">
<VARS accesslog="/iws60/https-server.iplanet.com/logs/access"/>
<LS id="ls1" ip="0.0.0.0" port="80" security="off"
acceptorthreads="1">
<CONNECTIONGROUP id="group1" matchingip="default"
servername="acme.com" defaultvs="acme.com"/>
</LS>
<MIME id="mime1" file="mime.types"/>
<ACLFILE id="acl1"
file="/iws60/httpacl/generated.https-server.iplanet.com.acl"/>
<VSCLASS id="defaultclass" objectfile="obj.conf"
rootobject="default">
<VARS docroot="/iws60/docs"/>
<VS id="acme.com" connections="group1" mime="mime1"
aclids="acl1">
<VARS webapps_file="web-apps.xml" webapps_enable="on"/>
<USERDB id="default" database="default"/>
</VS>
</VSCLASS>
</SERVER>server.xml ファイルの詳細は、iPlanet Web Server の『NSAPI プログラマーズガイド』の第 8 章「仮想サーバの構成ファイル」を参照してください。
web-apps.xml ファイルの例
!DOCTYPE 宣言が以下のフォーマットで存在する必要があることに注意してください。<!DOCTYPE vs PUBLIC "-//Sun Microsystems, Inc.; iPlanet//DTD Virtual Server Web Applications 6.0//EN" "http://developer.iplanet.com/webserver/dtds/
iws-webapps_6_0.dtd">何らかの理由でこの URL にアクセスできない場合は、以下の DTD ファイルを参照してください。
"file:/server_root/bin/https/dtds/iws-webapps_6_0.dtd" (server_root はサーバ ルートを示す)
Windows NT では、以下のようにドライブ文字を指定します。
"file:/drive:/server_root_path/bin/https/dtds/iws-webapps_6_0.dtd" (drive は ドライブ、server_root_path はサーバルートパスを示す)
以下の web-apps.xml ファイルでは、セッションマネージャと 1 つの Web アプリケーションを構成します。
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- iWS 6.0 specific web application configuration. -->
<!DOCTYPE vs PUBLIC "-//Sun Microsystems, Inc.; iPlanet//DTD Virtual Server Web Applications 6.0//EN" "http://developer.iplanet.com/webserver/dtds/iws-webapps_6_0.dtd">
<vs>
<!-- Define global configuration -->
<!- Configure a session manager and tracking configuration -->
<session-manager
class='com.iplanet.server.http.session.IWSSessionManager'
<init-param>
<param-name>maxSessions</param-name>
<param-value>1000</param-value>
</init-param>
<init-param>
<param-name>timeOut</param-name>
<param-value>1800</param-value>
</init-param>
<init-param>
<param-name>reapInterval</param-name>
<param-value>600</param-value>
</init-param>
<init-param>
<param-name>session-data-dir</param-name>
<param-value>/net/dotcom.com/sessions</param-value>
</init-param>
</session-manager>
<session-tracking use-cookies="true" />
<!-- Define the web applications for this virtual server-->
<!-- catalog application -->
<web-app uri="/catalog" dir="/webapps/catalog">
<!-- Specify a tempory directory. A path returned in the "javax.servlet.context.tempdir" property; -- defaults to WEB-INF/tmp. -->
<tempdir dir='/var/catalog/tmp'/>
<!-- reload classes at every 5 minutes; also include mycatlog.jar file in the classpath -->
<class-loader reload-interval='300' classpath='/home/work/mycatalog.jar' />
</web-app>
</vs>
web-apps.xml 要素のリファレンス
この節では、web-apps.xml ファイルで使用できる要素を示します。 以下の要素はマスター dtd ファイルで定義されています。
認証およびロールマッピング用に、特定のユーザまたはグループのネイティブデータベースを構成します。 この要素が指定されていない場合、認証はネイティブのデフォルト認証データベースを使って行われます。
ネイティブの認証データベース。 このデータベースは、 server.xml ファイル中の USERDB 要素の database 属性にも定義する必要があります。
仮想サーバまたは Web アプリケーションのクラスローダー。 この要素を指定しない場合は、仮想サーバのデフォルトのクラスローダーが使用されます。 仮想サーバレベルのクラスローダーで読み込まれるクラスは、再読み込みは動的に行われません。
ServletContext.getAttribute メソッドを使用すると、クラスローダーおよびクラスローダーのクラスパスまたはコンテキストの再読み込み間隔を検出できます。 詳しくは、第 7 章「API に関するヒント」を参照してください。
仮想サーバまたはシステムのクラスローダーを最初に呼び出してクラスを読み込むよう指定します。 使用できる値は true および false です。 デフォルト値は false です。
パラメータの説明。 init-param 要素内で使用されます。iPlanet Web Server では、この要素を無視します。
Servlet 2.3 仕様から Filter API を実装します。 web-app 要素内で使用されます。
iPlanet Web Server 6.0 がサポートするのは web.xml ファイルの Servlet 2.2 API だけですが、Servlet 2.3 仕様の Filter API は web-apps.xml ファイルで使用可能です。
filter 要素および filter-mapping 要素では、Filter API を実装します。 どちらも、web-apps.xml ファイルの web-app 要素の部分要素です。 filter および filter-mapping は、ファイルの位置以外は Servlet 2.3 仕様で説明されているとおりです。 詳しくは、以下の Web サイトを参照してください。
http://java.sun.com/products/servlet/index.html
シングルサインオンのフォームベースの認証を、仮想サーバのすべての Web アプリケーションに構成します。 この要素が指定されない場合は、デフォルトの仮想サーバレベルのセッションマネージャが使用されます。
上位の要素の初期設定パラメータを指定します。 init-param の属性は、上位の要素が参照するオブジェクトによって決まります。
たとえば、上位の要素が session-manager でセッションマネージャが IWSSessionManager の場合、init-param の属性は IWSSessionManager の初期設定パラメータになります。
部分要素 : param-name、param-value、description
JSP のコンパイル動作を構成します。 初期設定パラメータの詳細は、「JSP コマンドラインコンパイラ」 を参照してください。
パラメータの名前。 init-param 要素内で使用されます。
パラメータの値。 init-param 要素内で使用されます。
フォームからパラメータを復号化する方法について Web サーバに指示します。
使用できる値は、auto (デフォルト値)、none、または utf8 や Shift_JIS などの特定のコードです。
utf8 や Shift_JIS など、特定の符号化方式。 サーブレットのパラメータが使用する符号化方式がわかっている場合、このオプションを設定します。 以下の Web サイトにリストがあります。
http://java.sun.com/j2se/1.3/docs/guide/intl/encoding.doc.html
システムのデフォルトの符号化方式を使用します。 サーブレットのパラメータのデータの符号化方式がシステムのデフォルトの符号化方式と同じ場合、このオプションを設定します。
デフォルト。適切な符号化方式を以下の場所から順に探します。1. Content-Type ヘッダーに設定されている場合は charset。2. parameterEncoding 属性。「ServletRequest.setAttribute」 を参照してください。3. form-hint-field で定義されている隠しフォームフィールド。 それ以外の場合、システムのデフォルトの符号化方式が使用されます。 このオプションを設定すると、サーブレットパラメータの ASCII 以外の文字が誤って解釈されなくなります。
このプロパティを auto に設定した場合、サーバでは、ネイティブの文字を Java バイト配列に変換してから、要求された符号化方式に変換する必要があります。 したがって、none または特定の符号化方式のほうがパフォーマンスがやや向上します。
サーブレットで ServletRequest.getParameter メソッドを使用して、UTF-8 以外の文字があるフォームフィールドから値を取得する場合、enc 属性はデフォルトの auto に設定する必要があります。 それ以外の場合、getParameter メソッドで取得される値は、ゼロまたは未定義になります。 詳しくは、「ServletRequest.getParameter」を参照してください。
enc 属性の設定は、iPlanet Web Server が要求を受信したあとにサーブレットがパラメータを処理する方法に適用されます。 特に、要求方法が GET の場合、サーバに送信される URI は標準の ASCII セットだけから構成されている必要があります。 その他の文字はすべて符号化する必要があります。
たとえば、バックスラッシュを符号化する場合、% のあとに ASCII 文字セットでバックスラッシュに対応する 16 進数 5c を続けたものにバックスラッシュを置き換えます。 したがって、vw\xyz は vw%5cxyz になります。
詳しくは、以下の場所にある Internet Engineering Task Force の URI ワーキンググループのドキュメントのセクション 2.2 を参照してください。
http://www.ietf.org/rfc/rfc1738.txt
HTTP サーブレットの応答バッファの、初期およびデフォルトのサイズを構成します。 サーブレットでは、ServletResponse オブジェクトの setBufferSize メソッドを使用して応答バッファのサイズを再構成できます。
最後のフラッシュ以降指定した秒数が経過した場合、ストリームがデータをフラッシュするようにします。 デフォルトの 0 または負の値に設定されると、バッファがフルの場合だけ出力ストリームがフラッシュを行います。
指定した cookie のバージョンで応答するようサーバに要求します。
role-name 値を web.xml から LDAP ユーザ、グループ、またはロールに対応付けます。
role-name 値を web.xml から LDAP ユーザまたはグループに対応付けるかどうかを指定します。 値は、group (デフォルト) または user です。
true に設定されると、セキュリティ保護された接続で要求を受けた場合、サーバはセッション cookie で secure 属性を送信します。 デフォルト値は false です。
Web アプリケーションのセッションマネージャ。 各セッションマネージャの初期設定パラメータの詳細は、第 6 章「セッションマネージャ」を参照してください。
web.xml で session-timeout が指定されている場合、セッションマネージャの timeOut 初期設定パラメータは無効になります。 詳しくは、「session-timeout」を参照してください。
デフォルトの true の場合、セッション追跡に cookie を使用します。 使用できる値は true および false です。
デフォルトの true の場合、セッション追跡に URL 書き換えを使用します。 使用できる値は true および false です。
Web アプリケーションによって使用される一時的なディレクトリ
web-apps.xml ファイルのトップレベルの要素。 web-app 以外の部分要素では、すべての Web アプリケーションに対してデフォルトを設定します。
部分要素 : auth-native、class-loader、form-login-session、jsp-servlet、parameter-encoding、response-buffer、response-cookie、role-mapping、session-manager、session-tracking、session-cookie、tempdir、web-app
Web アプリケーション。 Web アプリケーションは WAR ファイルにパッケージ化されており、サーブレット、JSP、HTML ページ、クラスファイル、その他のアプリケーションリソースを格納することができます。
web-app 要素の部分要素は、その Web アプリケーションの上位の vs 要素に同等の部分要素がある場合、それをオーバーライドします。
部分要素 : auth-native、class-loader、filter、filter-mapping、jsp-servlet、parameter-encoding、response-buffer、response-cookie、role-mapping、session-manager、session-tracking、session-cookie、tempdir
wdeploy を使用した Web アプリケーションの導入
手動で Web アプリケーションを導入する前に、server_root/bin/https/httpadmin/bin ディレクトリがパスにあり、IWS_SERVER_HOME 環境変数が server_root ディレクトリに設定されていることを確認してください。コマンドラインで wdeploy ユーティリティを使用して、仮想サーバの Web アプリケーション環境に WAR ファイルを導入できます。
wdeploy deploy -u uri_path -i instance -v vs_id [-d directory] war_file
仮想サーバの Web アプリケーションを削除することもできます。
wdeploy delete -u uri_path -i instance -v vs_id hard|soft
仮想サーバの Web アプリケーションの URI およびディレクトリを一覧表示することもできます。
wdeploy list -i instance -v vs_id
省略可能。アプリケーションが導入される、または削除されるディレクトリ。 導入用に指定しない場合、アプリケーションはドキュメントのルートディレクトリに導入されます。
ディレクトリと web-apps.xml エントリを削除 (hard) するか、web-apps.xml エントリだけを削除 (soft) するかを指定します。
Web アプリケーションを導入する際に directory を指定しない場合、アプリケーションはドキュメントのルートディレクトリに導入されます。 その場合、hard パラメータを使用してアプリケーションを削除すると、ドキュメントのルートディレクトリも削除されます。
wdeploy deploy コマンドを実行すると、以下の 2 つの事柄が生じます。
指定された uri_path と directory とともに Web アプリケーションが web-apps.xml ファイルに追加されます。
以下に例を示します。wdeploy deploy -u /hello -iserver.iplanet.com -v acme.com -d/iws60/https-server.iplanet.com/acme.com/web-apps/hello /iws60/plugins/servlets/examples/web-apps/HelloWorld/HelloWorld.war
このユーティリティを実行した結果として、以下の web-apps.xml エントリが生じます。
<vs>
<web-app uri="/hello"
dir="/iws60/https-server.iplanet.com/acme.com/webapps/hello"/>
</vs>以下に、/iws60/https-server.iplanet.com/acme.com/web-apps/hello ディレクトリの内容を示します。
colors
index.jsp
META-INF
WEB-INF/
web.xml
/classes/
HelloWorldServlet.class
HelloWorldServlet.java
SnoopServlet.class
SnoopServlet.javaサーバインスタンスの server.xml ファイルが仮想サーバの web-apps.xml ファイルを指していることを確認してから、導入した Web アプリケーションを実行します。
アプリケーションを導入すると、ブラウザの以下の URL からそのアプリケーションにアクセスできます。
http://vs_urlhost[:vs_port]/uri_path/[index_page]
http://acme.com:80/hello/index.jsp
Web アプリケーションの例
iPlanet Web Server 6.0 には Web アプリケーションの例が付属しています。 Web アプリケーションの例は以下の場所にあります。server_root/plugins/servlets/examples/web-apps
HelloWorld : HelloWorld.war ファイルにある単純な Web アプリケーション
これらの例は、wdeploy ユーティリティを使用して導入できます。filter-test : filter-test.war ファイルにある Filter API の機能の例
utility-taglib : utility-taglib.war ファイルにある JSP タグライブラリの例。 このタグライブラリは Jakarta プロジェクトによって作成された。Web サイトは jakarta.apache.org
前へ 目次 索引 DocHome 次へ
Copyright © 2000 Sun Microsystems, Inc. Some preexisting portions Copyright © 2000 Netscape Communications Corp. All rights reserved.
Last Updated September 17, 2001