前へ     目次     索引     DocHome     次へ     
iPlanet Web Server, Enterprise Edition サーブレットに関するプログラマーズガイド



第 8 章   古いバージョンのサーブレットおよび JSP の構成


この章では、以下の節に分けて、iPlanet Web Server 4.x との下位互換用として提供されている古いバージョンの構成手順および構成ファイルについて説明します。



デフォルトの仮想サーバ

デフォルトの仮想サーバは、古いバージョンのアプリケーションを実行できる唯一の仮想サーバです。 デフォルトの仮想サーバは、iPlanet Web Server が初めてインストールされるときに存在している唯一の仮想サーバです。 デフォルトの仮想サーバの設定方法については、iPlanet Web Server の『NSAPI プログラマーズガイド』の第 8 章「仮想サーバの構成ファイル」を参照してください。



サーブレットおよび JSP の有効化



サーブレットや JSP を有効または無効にするには、サーバマネージャインタフェースの「Java>Enable/Disable Servlets/JSP」ページを使用してください。

サーブレットが有効か無効かにかかわらず、デフォルトでは、ファイル obj.conf には servletjspServletByExt のような名前を持つオブジェクトが指定されます。 これらのオブジェクトを削除しないでください。 これらのオブジェクトを削除すると、サーバマネージャでサーブレットを起動できなくなります。



クライアントで JSP を使用可能にする



サーブレットおよび JSP が iPlanet Web Server で有効になっていれば、クライアントで JSP ページを使用可能にするために特別なことをする必要はありません。 JSP が有効になっている限り、iPlanet Web Server は、.jsp 拡張子を持つすべてのファイルを JSP として扱います。 (JSP ファイルを登録されているサーブレットディレクトリに置かないでください。iPlanet Web Server は、登録されているサーブレットディレクトリ内のすべてのファイルをサーブレットとみなします。)



  iPlanet Web Server の別名ディレクトリで JSP を実行することはできません。 たとえば、ドキュメントルートが server_root/docs の場合、http://foo.com/myjspserver_root/docs/myjsp ではなく /some/other/dir にマッピングすると、動作しなくなります。

 





デフォルトの仮想サーバでのサーブレットの構成



デフォルトの仮想サーバのクライアントからサーブレットにアクセスできるようにするための方法には 3 つあります。 2 番目と 3 番目の方法は、iPlanet Web Server 4.x との下位互換用として提供されています。

  • ほかのすべての仮想サーバと同じように、Web アプリケーションにサーブレットを組み込み、その Web アプリケーションを導入します。 この方法は、第 2 章「Web アプリケーション」で説明しています。 これは、iPlanet Web Server 6.0 の新しい機能です。

  • サーブレットディレクトリとして iPlanet Web Server に登録済みのディレクトリの 1 つに、サーブレットクラスファイルを置きます。 詳細は、「サーブレットディレクトリの登録」を参照してください。

  • サーブレット用にサーブレット仮想パスを定義します。 この場合、サーブレットクラスは、ファイルシステムのどこにでも置くことができます。リモートマシンに置くこともできます。 詳細は、「サーブレット仮想パスの指定」を参照してください。

デフォルトの仮想サーバのサーブレットを iPlanet Web Server 4.x のときと同じように使うには、以下の手順に従います。

  1. グローバルサーブレットの属性設定

  2. サーブレットディレクトリの登録

  3. 必要に応じて、サーブレットの個別登録

  4. 必要に応じて、サーブレット仮想パスの指定

  5. 必要に応じて、サーブレットのコンテキストの指定


グローバルサーブレットの属性設定

以下のサーブレット属性をオプションで指定できます。

  • 起動サーブレット - iPlanet Web Server の起動時に読み込まれるサーブレット

  • セッションマネージャ - サーブレット用のセッションマネージャ。 セッションマネージャの詳細は、第 6 章「セッションマネージャ」を参照してください。

  • セッションマネージャ引数 - サーブレットエンジン用のセッションマネージャの引数。 セッションマネージャの詳細は、第 6 章「セッションマネージャ」を参照してください。

  • 再読み込み間隔 - サーブレットや JSP をサーバ上で変更したときに、読み込みし直すまでのサーバの待ち時間。 デフォルト値は 5 秒です。

これらの属性は、サーバマネージャインタフェースの「Legacy Servlets>Configure Global Servlet Attributes」ページで対話式に設定できます。 または、サーバの config ディレクトリ内の構成ファイル servlets.properties および contexts.properties を編集することもできます。


サーブレットディレクトリの登録

クライアントがサーブレットにアクセスできるようにする 1 つの方法は、サーブレットディレクトリとして iPlanet Web Server に登録されているディレクトリにサーブレットを置くことです。 登録済みのサーブレットディレクトリ内のサーブレットは、必要なときに動的に読み込まれます。 サーバは、サーブレットファイルを監視し、ファイルに変更が加えられたら自動的にそれらを再読み込みします。

iPlanet Web Server のサーブレットディレクトリの登録数に上限はありません。 iPlanet Web Server は、最初 1 つのサーブレットディレクトリ (server_root/docs/servlet/) を持っています。

たとえば、SimpleServlet.class のサーブレットが、サーバのドキュメントルートディレクトリ (デフォルトのサーブレットディレクトリ) の servlet サブディレクトリ内にある場合、Web ブラウザに次のように指定してサーブレットを起動できます。

http://your_server/servlet/SimpleServlet

iPlanet Web Server は、登録済みサーブレットディレクトリ内のすべてのファイルがサーブレットであるとみなします。 サーバは、.class 拡張子を持つディレクトリ内のすべてのファイルをサーブレットとして扱います。 iPlanet Web Server は、サーブレットディレクトリに置かれている HTML ファイルや JSP などのその他のファイルは正しく処理できません。

サーバは、複数のサーブレットディレクトリを持つことができます。 必要に応じて、サーブレットディレクトリを仮想ディレクトリにマッピングすることができます。 たとえば、http://poppy.my_domain.com/products/ が、ディレクトリ server_root/docs/january/products/servlets/ 内のサーブレットを起動するように指定できます。

サーブレットディレクトリを登録し、URL 接頭辞を指定するには、サーバマネージャインタフェースの「Legacy Servlets>Servlet Directory」ページを使用してください。

または、ファイル obj.conf でデフォルトのオブジェクトに次のような適切な NameTrans 指令を追加することによって、サーブレットディレクトリを登録することもできます。


NameTrans fn="pfx2dir" from="/products" dir="d:/netscape/server4/docs/january/products/servlets/" name="ServletByExt"

登録済みサーブレットディレクトリからのパスを指定して package 指令をサーブレットコード内に記述した場合は、登録済みサーブレットディレクトリのサブディレクトリ内にあるサーブレットを起動できます。 たとえば、サーブレットが次の場所にあり、server_root/docs/servlet/ が登録済みサーブレットディレクトリであると仮定します。

server_root/docs/servlet/HelloWorld/HelloWorldServlet.class

Java ソースファイルの最初の行に、次の package 指令を指定します。

package HelloWorld;

この後、Web ブラウザで次のように指定すると、サーブレットを起動できるようになります。

http://your_server/servlet/SimpleServlet

パッケージ化されているサーブレットの再読み込みの詳細は、「isModifiedCheckAggressive」を参照してください。


サーブレットの個別登録

iPlanet Web Server は、登録済みのサーブレットディレクトリ内のすべてのファイルをサーブレットとして扱います。 以下の条件にあてはまらない限り、ディレクトリ内に置かれているサーブレットを個別に登録する必要はありません。

  • サーブレットが、要求 URL を介して渡されていない入力パラメータを使用している

  • サーブレット用の仮想 URL を追加して設定する場合

  • サーブレットが、パッケージ化されている、または .jar ファイル内にある。 サーバは、パッケージ化されたサーブレット用の .class ファイルまたは .jar ファイルは検索しません。

これらの条件のどれかにあてはまる場合には、サーバマネージャインタフェースの「Legacy Servlets>Configure Servlet Attributes」ページを使って、個別にサーブレットを登録してください。 または、ファイル servlets.properties を編集してサーブレット用のエントリを追加することもできます。

個別にサーブレットを登録する場合、次の属性を指定します。

  • サーブレット名 - iPlanet Web Server はこの値をサーブレット識別子として使って、サーブレットを内部的に識別します。 (識別子がクラスコード名と偶然に一致した場合を除き、この識別子はサーブレットの起動に使用されている URL の一部ではありません。)

  • サーブレットコード (クラス名) - クラスファイル名。 .class 拡張子を指定する必要はありません。

  • サーブレットクラスパス - サーブレットのあるディレクトリ、または zip ファイルや jar ファイルへの絶対パス名または URL。 クラスパスは、ファイルシステム内の任意の場所を指定できます。 サーブレットクラスパスには、ディレクトリ、.jar ファイル、.zip ファイルや、ディレクトリへの URL が指定できます。 ( zip ファイルや jar ファイルのクラスパスとして URL を指定することはできません。)

    サーブレットクラスパスが登録済みサーブレットディレクトリでない場合は、サーブレット仮想パスを追加して、クライアントがサーブレットにアクセスできるようにする必要があります (「サーブレット仮想パスの指定」参照) 。

    iPlanet Web Server では、サーブレットクラスパスにディレクトリ、jarzip、および URL を複数指定することができます。

  • サーブレット引数 - 必要に応じて追加するサーブレット用の引数で、コンマで区切られたリスト

次のコードは、servlets.properties 内の同じサーブレット用の構成情報の例を示します。


servlet.BuyNowServlet.classpath=D:/Netscape/server4/docs/servlet /buy;D:/Netscape/server4/docs/myclasses
servlet.BuyNowServlet.code=BuyNow1A
servlet.BuyNowServlet.initArgs=arg1=45,arg2=online,arg3="quick shopping

必要に応じて、サーブレットクラスパスとして値を複数指定することができます。


サーブレット仮想パスの指定

サーブレットディレクトリにサーブレットを置かずに個別に登録する場合、サーブレット仮想パスを定義する必要があります。 たとえば、次の URL

http://poppy.my_domain.com/plans/plan1

が、次のディレクトリに定義されているサーブレットを起動するように指定できます。

server_root/docs/plans/releaseA/planP2Version1A.class

登録されているサーブレットディレクトリの内外にかかわらず、ファイルシステムのどこに置かれているサーブレットに対しても、サーブレット仮想パスを設定できます。

サーブレット仮想パスを指定するには、サーバマネージャインタフェースの「Legacy Servlets>Configure Servlet Virtual Path Translation」ページを使用します。 このページで、仮想パス名およびサーブレット名を指定します。 または、rules.properties 構成ファイルを編集して、サーブレット仮想パスを追加することもできます。 仮想パスが設定されているサーブレットだけが、初期引数を使用できます。

サーブレット仮想パスを使う前に、インタフェースの「Legacy Servlets>Configure Servlet Attributes」ページ (または servlets.properties 構成ファイル) で、サーブレット用のサーブレット識別子 (サーブレット名) を追加する必要があります。


サーブレット仮想パスの例

論理 URL http://poppy.my_domain.com/plans/plan1が、次のように定義されたサーブレットを起動するように指定します。

server_root/docs/servlet/plans/releaseA/planP2Version1A.class.

  1. サーブレット識別子、クラスファイル、およびクラスパスを指定します。

    インタフェースの「Legacy Servlets>Configure Servlet Attributes」ページで、次のように指定します。

    • 「Servlet Name」フィールドで、plan1Aのように、サーブレットの識別子を入力します。 (クラスファイル名と同じである必要はありません)。

    • 「Servlet Code」フィールドで、planP2Version1Aのように、クラスファイル名を入力します。 ディレクトリは指定しないでください。 .class 拡張子は必要ありません。

    • 「Servlet Classpath」フィールドで、サーブレットクラスファイルが置かれるディレクトリ、または jar ファイルや zip ファイルの絶対パス名、またはディレクトリの URL を入力します。 この例では、server_root/docs/servlet/plans/releaseA と入力します。 (例 : D:/netscape/server4/docs/servlet/plans/releaseA)

    • 「Servlet Args」フィールドで、サーブレットに必要な引数を追加入力します。 (この例では追加の引数は使いません。)

    変更を保存します。

    手動でこの変更を行うには、構成ファイル servlets.properties に次の行を追加します。


    /servlet.planA.classpath=D:/netscape/server4/docs/servlet/plans/releaseA/
    servlet.plan1A.code=planP2Version1A

  2. サーブレットの仮想パスを指定します。

    「Legacy Servlets>Configure Servlet Virtual Path Translations」ページで、次のように指定します。

    • 「Virtual Path」フィールドで、仮想パス名を入力します。 サーバ名は接頭辞として暗黙指定されるので、この場合は、仮想パス http://poppy.mcom.com/plans/plan1 を指定するために /plans/plan1 と入力するだけで済みます。

    • 「Servlet Name」フィールドで、この仮想パスによって起動されるサーブレット用の識別子を入力します。 これは、「Configure Servlet Attributes」ページで指定したサーブレット識別子です。この場合は、plan1A です。

    変更を保存します。

    ファイルを編集してこの変更を行うには、rules.properties に次の行を追加します。

    /plans/plan1=plan1A

    このサーブレット仮想パスが設定された後は、クライアントが URL http://poppy.my_domain.com/plans/plan1 に対する要求をサーバに送ると、サーバは server_root/docs/servlet/plans/releaseA/plan2PVersion1A.class 内にあるサーブレットの呼び出し結果を送り返します。


サーブレットのコンテキストの指定

コンテキストによって、複数のサーブレットがデータを交換したり互いのフィールドにアクセスしたりすることが可能になります。 コンテキストは、仮想サーバの定義やコードの識別に役立ちます。 コンテキストは、servlets.properties および contexts.properties ファイルで定義します。



ユーザインタフェースの使用



古いバージョンのサーブレットおよび JSP 用の設定を指定するためにユーザインタフェースを使用する方法の詳細は、オンラインヘルプの次の項目を参照してください。

次のページは Web Server Administration Server の「Global Settings」タブにあります。

  • 「Configure JRE/JDK Paths」ページ

次のページはサーバマネージャの「Java」タブにあります。

  • 「Enable/Disable Servlets/JSP」ページ

  • 「Configure JVM Attributes」ページ

  • 「Delete Version Files」ページ

次のページはサーバマネージャの「Legacy Servlets」タブにあります。

  • 「Configure Global Servlet Attributes」ページ

  • 「Configure Servlet Attributes」ページ

  • 「Configure Servlet Virtual Path Translation」ページ

  • 「Configure Servlet Directory」ページ



古いバージョンの構成ファイル

この節では、次のファイルの用途と使用方法について説明します。

これらのファイルのすべては、ディレクトリ server_id/config に置かれています。



  iPlanet Web Server 6.0 では、web-apps.xml ファイルが各仮想サーバ用に用意されています。これによって、各仮想サーバ用に Web アプリケーションを別々に構成できます。 servlets.propertiesrules.properties、および contexts.properties ファイルは、サーバインスタンス用にデフォルトの仮想サーバにのみ適用します。これらのファイルは下位互換用です。 すべての Web アプリケーションの構成を web-apps.xml ファイルを使用して行うことをお勧めします。 web-apps.xml ファイルの詳細は、第 2 章「Web アプリケーション」を参照してください。

 




servlets.properties

servlets.properties ファイルは、デフォルトの仮想サーバに対してのみ、グローバルサーブレット設定およびシステムのサーブレットリストを定義します。

グローバルサーブレット設定の例には、iPlanet Web Server を起動したときに実行するサーブレットの指定があります。 servlets.properties ファイルは、個々のサーブレットの構成情報も指定します。 構成情報には、クラス名、クラスパス、およびサーブレットに必要な入力引数が設定されます。

サーブレットの仮想パス変換を指定する場合、サーブレットは servlets.properties ファイルで設定されている必要があります。

サーバマネージャインタフェースの「Legacy Servlets>Configure Servlet Attributes」ページを使って、または servlets.properties を直接編集して、サーブレットの構成情報を指定できます。 サーバマネージャインタフェースの「Legacy Servlets>Configure Servlet Attributes」ページで変更するときには、システムは常に自動的に servlets.properties を更新します。

サーブレットの属性を指定する場合、サーブレットの name パラメータを指定します。 この名前は、サーブレットのクラスファイル名である必要はありません。これは、サーブレットの内部識別子です。 code パラメータの値としてクラスファイル名を指定します。

次に、servlets.properties ファイルの例を示します。

# サーブレットのプロパティ
# 起動時に読み込むサーブレット
servlets.startup= hello
# ServletContext.getRealPath が動作するために必要な
# デフォルトのドキュメントルート
servlets.config.docRoot=d:/Netscape/Server4/docs
# トラッカサーブレット
servlet.tracker.code=MyTrackerServlet
servlet.tracker.classpath=d:/Netscape/Server4/docs/servlet
# demo1 サーブレット
servlet.demo1.code=Demo1Servlet
servlet.demo1.classpath=d:/Netscape/Server4/docs/demos
servlet.demo1.initArgs=a1=0,b1=3456
servlet.demo1.context=context1


rules.properties

rules.properties ファイルは、デフォルトの仮想サーバに対してのみ、サーブレットの仮想パス変換を定義します。 たとえば、/mytest2 を指す URL が servlets.properties ファイル中に記述された demo1 という名前のサーブレットを起動するようにマッピングを設定できます。 サーバマネージャインタフェースの「Legacy Servlets>Configure Servlet Virtual Path Translation」ページでパラメータを設定するか、rules.properties ファイル内にパスを指定することによって、仮想パスを指定できます。

servlets.properties のサーブレットと関連付けられた name は、ファイル rules.properties で使用されます。サーブレットのクラス名は、rules.properties では表示されません。 たとえば、servlets.properties の次の行は、サーブレット名 demo1 をディレクトリd:/Netscape/Server4/docs/demos 内のサーブレットクラスファイル Demo1Servlet.class と関連付けます。


# servlets.properties 内
# demo1 サーブレット
servlet.demo1.code=Demo1Servlet
servlet.demo1.classpath=d:/Netscape/Server4/docs/demos

rules.properties の次の行は、URL http://server_id/mytest2d:/Netscape/Server4/docs/demos/Demo1Servlet.class のサーブレットを起動するように、サーブレット仮想パス変換を定義しています。

/mytest2=demo1

次に、rules.properties の例を示します。

# Servlet rules properties
#
# This file specifies the translation rules for invoking servlets.
# The syntax is:
#<virtual-path>=<servlet-name>
#or
#@regular_expression=<servlet-name> (use double back-slashes)
#
# where <virtual-path> is the virtual path used to invoke the
# servlet, and <servlet-name> is the name of the servlet.
# Surrounding white space is ignored. The ordering of the rules is
# not important, as the longest match will always be used first.
# Use of regular expression can lead to a heavy peformance penalty
#
################################# rules ################################
/mytest1=tracker
/mytest2=demo1


rules.properties での正規表現の使用

iPlanet Web Server は、rules.properties ファイルで正規表現をサポートしており、入力された URL が、ある正規表現と一致すると指定されたサーブレットが実行されます。 ただし、次に挙げたファイルヘッダーの例は誤りです。


# 例
#
# /simple=SimpleServlet\n
# @.*\\.foo=wasp

\\」は、(.) 拡張子を認識しません。 この例の意図は、/my/xxx.foo などの URL の要求があった場合は常に、wasp サーブレットを実行することです。 しかし、iPlanet Web Server は、「/」または「\」を「/」に置き換えてしまうため、全体の意味を変更してしまいます。 この事態を避けるには、「/」または「\」は使わずに、正規表現を次のように指定してください。

@.*[.]foo$=wasp

特定のタイプのファイルを特定のサーブレットに割り当てる別の方法は、次の URL にあるサーブレット 2.2 API 仕様で記述されている web.xml ファイルの servlet-mapping の箇所の説明を参照してください。

http://java.sun.com/products/servlet/index.html

特定のタイプのファイルを obj.conf ファイル内で特定のサーブレットに割り当てる方法は、obj.conf のオブジェクト」を参照してください。


contexts.properties

contexts.properties ファイルは、デフォルトの仮想サーバに対してのみ、コンテキストを定義します。これによって、複数のサーブレットがデータを交換したり互いのフィールドにアクセスしたりすることが可能になります。 コンテキストは、仮想サーバの定義やコードの識別に役立ちます。 コンテキストが定義されていないと、デフォルトのグローバルコンテキストがすべてのサーブレット用に使用されます。



  すべての JSP はデフォルトのグローバルコンテキストに属しています。 JSP にカスタムコンテキストは定義できません。 ただし、グローバルコンテキストのプロパティを変更して、JSP に変更を反映させることはできます。

 



サーブレット用のコンテキストが定義されていない場合、サーブレットはグローバルコンテキストに属しています。 複数のコンテキスト内で同じサーブレットを使用できます。

コンテキストの name のみが必須です。 その他のすべての未指定のプロパティは、グローバルコンテキストから引き継がれます。 グローバルコンテキストのプロパティを変更することもできます。 contexts.properties ファイル内のコメントは、グローバルコンテキストのデフォルトプロパティの値を一覧表示しています。

次に、contexts.properties の例を示します。

# @(#)contexts.properties (autogenerated)
#
# Contexts Properties:
#
# context.<context_name>.sessionmgr=session manager (some session managers
#   (like MMapSessionManager) can only be instatiated once within the server
# context.<context_name>.sessionmgr.initArgs=list of (name, value) pairs which
#   will represent parameters specific to the session manager
# context.<context_name>.initArgs=list of (name, value) pairs which will be added
#   to this context's attributes
# context.<context_name>.respondCookieVersion=(cookie version) tells the server
#   whether to respond with specific cookie version
# context.<context_name>.sessionExpireOnClose(true|false) tells the server to
#   mark session cookies as directed to expire when the user quits
#   the browser
# context.<context_name>.tempDir=path (forward slashes only) - sets up Servlet API
#   2.2 property for the temporary directory
# context.<context_name>.reloadInterval=seconds - time interval within which the
#   server checks for jsp and servlet files being modified (global
#   context only)
# context.<context_name>.bufferSize=bytes - initial http output stream buffer size
# context.<context_name>.docRoot=path (forward slashes only) - this context
#   document root when not specified - web server's document root
#   will be used (default)
# context.<context_name>.inputStreamLengthCheck=(true|false) - makes
#   ServletInputStream stop reading data when Content-Length bytes
#   are read
# context.<context_name>.outputStreamFlushTimer=(seconds|0) - forces the stream
#   to flush the data if certain time elapsed since the last flush;
#   0 - ignore it
# context.<context_name>.uri=contex_uri_base - additional URI prefix which
#   servces as a context base
# context.<context_name>.authdb=name - authentication database
# context.<context_name>.classpath=name - global classpath for this context
# context.<context_name>.signleClassLoader=(true|false) - tells the servlet
#   engine whether to use a single class loader for all servlets in
#   the context
# context.<context_name>.serverName=name - server instance name
# context.<context_name>.contentTypeIgnoreFromSSI=(true|false) - ignore
#   setContentType when invoked from SSI
# context.<context_name>.parameterEncoding=(utf8,none,auto) - advises the web
#   server on how to decode parameters from forms
# context.<context_name>.isModifiedCheckAggressive=(true|false) - determines
#   whether to be aggressively checking dependencies for the servlet
#   loader to reload modified servlets
#
# <context_name>="global" is reserved for the global context. Every new context
#   will inherit initial settings of the global context
#
# Context properties:
# context.global.sessionmgr=com.netscape.server.http.session.SimpleSessionManager
# context.global.sessionmgr.initArgs=
# context.global.initArgs=initial=0
# context.global.respondCookieVersion=0
# context.global.tempDir=/tmp
# context.global.reloadInterval=5
# context.global.bufferSize=4096
# context.global.docRoot=/foo/bar
# context.global.inputStreamLengthCheck=true
# context.global.outputStreamFlushTimer=0
# context.global.uri=/
# context.global.authdb=default
# context.global.classpath=
# context.global.singleClassLoader=false
# context.global.contentTypeIgnoreFromSSI=true
# context.global.parameterEncoding=utf8
# context.global.isModifiedCheckAggressive=false
#
################################# Contexts #############################
context.global.initArgs=docRoot=C:/iPlanet/Servers
context.context1.name=context1

以下の節では、いくつかのコンテキストプロパティを詳しく説明します。


isModifiedCheckAggressive

新しいバージョンでは、次のどちらかの操作を実行していないと、パッケージ化されたサーブレットを変更したときに自動的に再読み込みされません。

  • isModifiedCheckAggressive プロパティを true に設定する。

    例:context.global.isModifiedCheckAggressive=true

  • サーブレットを起動するときに、.class 拡張子を使用する。

    例:http://your_server/servlet/HelloWorld.HelloWorldServlet.class


parameterEncoding

context.global.parameterEncoding プロパティを使って、サーブレットのパラメータの文字の符号化方式を決めることができます。 次のようなオプションがあります。

none

システムのデフォルトの符号化方式を使用します。 サーブレットのパラメータデータの符号化方式をシステムのデフォルトの符号化方式と同じにする場合に、このオプションを設定します。

auto

(デフォルト) 適切な符号化方式を次の順番で判別します : 1) Content-Type ヘッダーに設定されている場合は charset、2) parameterEncoding 属性 (「ServletRequest.setAttribute」を参照)、3) j_encoding などの隠しフォームフィールド。 判別できなかった場合は、システムのデフォルトの符号化方式が使用されます。 このオプションを設定すると、サーブレットパラメータ内で ASCII 以外の文字の変換ミスを防ぐことができます。

このプロパティが auto に設定されている場合、サーバは要求されたコードに変換する前に、ネイティブな文字コードを java バイト配列に変換する必要があります。 したがって、none または特定のコード方式の方が、パフォーマンスが若干向上します。

サポートされている java 文字の符号化方式

utf8 または Shift_JIS などの特定の符号化方式。 サーブレットパラメータが使うコード方式を知っている場合は、このオプションを設定します。 文字コードの全リストは、以下の URL で入手できます。

http://java.sun.com/j2se/1.3/docs/guide/intl/encoding.doc.html

responseCT

可能であれば、応答コンテンツの種類から適切な符号化方式を判別します。 判別できなかった場合は、システムのデフォルトの符号化方式が使用されます。

サーブレットが ServletRequest.getParameter メソッドを使用して、フォームフィールドから UTF-8 以外の文字がある値を取得する場合、contexts.properties ファイルでparameterEncoding プロパティがデフォルトの auto または responseCT に設定されている必要があります。 そうでない場合、getParameter メソッドによって抽出された値は、ゼロか定義されていない値となります。 詳細は、「ServletRequest.getParameter」を参照してください。

parameterEncoding プロパティ設定は、iPlanet Web Server が要求を受け取った後に、サーブレットがパラメータを処理する際に適用されます。 サーバに送られた URI は、要求方法が GET の場合は特に、標準 ASCII セットだけで構成されている必要があります。 その他のすべての文字は符号化される必要があります。

たとえば、バックスラッシュを符号化するには、% とその後ろに ASCII 文字セットに対応する 16 進数 (5c) を置いてバックスラッシュを置き換えます。 その結果、vw\xyz は、vw%5cxyz となります。 符号化する必要のある文字の詳細は、「parameter-encoding」を参照してください。


singleClassLoader

デフォルトでは、singleClassLoader プロパティは false です。これは、サーブレットがコンテキストを共有していても、各サーブレットは異なるクラスローダで読み込まれることを意味します。 これによって、2 つのサーブレットが互いの静的クラスメンバーにアクセスすることが困難になっています。 同じクラスローダでコンテキスト内にすべてのサーブレットを読み込むには、singleClassLoader プロパティを true に設定します。

サーブレットの再読み込み (.class または .jsp ファイルが変更されたときに行われる) は、singleClassLoader=true のときには行われません。

singleClassLoader=true の場合、ClassCache ディレクトリを contexts.propertiescontext.global.classpath 行に追加しない限り、JSPへの RequestDispatcher.forward 呼び出しは行われません。 以下に例を示します。

context.global.singleClassLoader=true
context.global.classpath=server_root/https-server_id/ClassCache



古いバージョンの例



iPlanet Web Server 6.0 では、古いバージョンのサーブレットと JSP ファイルの例のセットが提供されています。 これらは、次の場所に格納されています。

server_root/plugins/servlets/examples/legacy

legacy サブディレクトリには次のディレクトリが含まれています。

  • beans.10 - JSP 1.x の Java Bean ファイルの例が記述されています。

  • jsp.10 - JSP 1.x の例をそれぞれ記述するサブディレクトリが含まれています。

  • jsp.10/hangman - iPlanet Web Server 4.x で SSJS アプリケーションであった、JSP アプリケーションが含まれています。 SSJS アプリケーションを JSP に変換する方法の詳細は、付録 B「SSJS アプリケーションの変換」を参照してください。

  • make - サーブレットの Makefile の例が記述されています。 これらは、ほかのすべての Makefile での共通の規則が記述されている Makefile です。

  • servlets - サーブレットの例用の Java ソースファイルおよび Makefile をそれぞれ持つサブディレクトリが含まれています。

  • tools - SDKTools.jar ファイルおよびその他のユーティリティファイルが含まれています。



古いバージョンのサーブレットのパフォーマンスを最大限にする

サーブレットのパフォーマンスを改善するため、次のガイドラインについて考慮してください。

  • obj.conf ファイルを手動で編集する場合、サーブレットの NameTrans (NameTrans fn="NSServletNameTrans" name="servlet") が常に最初の NameTrans 指令になるようにします。

    この指令は、読み込まれたサーブレットのために高度に最適化された URI キャッシュを使用しており、一致すると REQ_PROCEED を返します。これにより、ほかの NameTrans 指令を実行する必要がなくなります。

  • デフォルトの仮想サーバでは、(「Configure Servlet Attributes」ページまたは rules.properties および servlets.properties を使用して) 個別に定義されたサーブレットは、サーブレットディレクトリに動的に読み込まれたサーブレットより少し速く動作します。


前へ     目次     索引     DocHome     次へ     
Copyright © 2000 Sun Microsystems, Inc. Some preexisting portions Copyright © 2000 Netscape Communications Corp. All rights reserved.

Last Updated September 17, 2001