Interstage Application Server/Interstage Web Server 移行ガイド
目次 索引 前ページ次ページ

第4章 旧機能から新機能への移行方法> 4.2 Servletサービス(Tomcat 5.5ベースのサーブレット実行環境)への移行

4.2.2 Servletサービス移行時の注意

 Tomcat3.1ベースのServletサービス、またはTomcat4.1ベースのServletサービスから、Tomcat5.5ベースのServletサービス(V9のIJServer)へ移行する場合の注意事項について説明します。
 特に表中記載のないものについては、設定や動作上の差分はありません。

Webアプリケーション環境定義ファイル(deployment descriptor)の記述形式

 Tomcat5.5ベースのServletサービスでは、Webアプリケーション環境定義ファイル(deployment descriptor)のタグは以下の方法でチェックします。

 タグの指定方法が誤っている場合には、Interstage管理コンソールで配備を行った際に、画面上のメッセージ領域にエラーメッセージを出力して配備を中断します。
 また、IJServerの起動時にタグの指定方法の誤りが検出された場合には、IJServerのコンテナログに以下のエラーメッセージが出力されますので、“J2EEユーザーズガイド”の“Webアプリケーション環境定義ファイル(deployment descriptor)”を参照して修正してください。たとえば、servlet-mappingタグをservletタグよりも前に定義した場合にエラーとなります。

[ERROR] Digester - -Parse Error at line [行数] column [列数]: [原因]

 Webアプリケーション環境定義ファイル(deployment descriptor)修正後、IDE(統合開発環境ツール)等に付属しているdeployment descriptorの検証機能を使用して、修正内容の妥当性を検証することを推奨します。
 配備済みのアプリケーションのdeployment descriptorの記述形式を、Servlet2.2または2.3からServlet2.4の記述形式に変更する場合は、アプリケーションを配備しなおしてください。

サーブレット・マッピング

 「V6.0以降のServletサービス」では、Webアプリケーション環境定義ファイル(deployment descriptor)のサーブレット・マッピングで定義されたものしか動作しません。
 「V5.1以前のServletサービス」で、サーブレット・マッピングの定義を行わず、以下のURLの形式でサーブレットの呼び出しを行っていた場合は、Webアプリケーション環境定義ファイルにサーブレット・マッピングの定義を行う必要があります。

JSPのimport

 Tomcat5.5ベースのServletサービスでは、JSP1.2/2.0の仕様の以下のJavaパッケージのクラス以外は、importなしにクラス名のみで直接スクリプトレット使用はできません。

javax.servlet

 Tomcat5.5ベースのServletサービスで仕様外のクラスを使用する場合は、以下のいずれかの対処を行ってください。

配備時のWebアプリケーション名

HTTPトンネリングの移行

マルチコンテナ機能の移行

JSPのコンパイル

 Java言語仕様に準拠していないコードや推奨されないコードを含むJSPは、以前のバージョンからの移行により、コンパイルに失敗したり、実行結果が変わったりすることがあります。
 移行時にはJSPを見直し、Java言語仕様に従っているか確認してください。


 JSP内のJavaコードで、ローカル変数名に“org”を使用している。
 ⇒ユニークなパッケージ名の先頭に使用される文字列(“org”や“com”など)を、ローカル変数名に使用すべきではありません。

Systemwalker Service Quality Coordinatorと連携したトランザクション内訳分析の対象

Interstage管理コンソールのWebアプリケーションのモニタの対象

JSPのリロード

 クラスのオートリロード機能とは別に設定可能となりました。
 [ワークユニット] > [新規作成]タブ > [詳細設定] > [Servletコンテナ設定] > [JSPのリロード]で設定可能です。

セション管理用CookieにSecure属性を常に付加する

 Tomcat5.5ベースのServletサービスでは、Interstage管理コンソールより以下で設定を行ってください。
  [システム] > [ワークユニット] > “ワークユニット名” > “Webアプリケーション名” > [環境設定]タブ > [コンテキスト設定] > [セション] > クッキーにSecure属性を常に付加する

 既存通りJavaVMオプションとして定義することも可能(※)ですが、Interstage管理コンソールからの設定を推奨します。
 ※) いずれかで設定されていれば有効となります。

リクエストのエンコーディング

 Servletサービスのバージョンによって、リクエストを処理するエンコーディングにデフォルトでは以下の動作差分があります。

対象

Tomcat4.1ベースのServletサービス

Tomcat5.5ベースのServletサービス

リクエストURI

UTF-8 (注1)

ISO-8859-1(設定可能)

GETメソッド時のリクエストパラメタ(クエリストリング)

リクエストボディを処理するエンコーディング (注2)

以下から選択可能。
・リクエストURIを処理するエンコーディング
・リクエストボディを処理するエンコーディング (注2)

POSTメソッド時のリクエストパラメタ(リクエストボディ)

リクエストボディを処理するエンコーディング (注2)

リクエストボディを処理するエンコーディング (注2)

リクエストボディを処理するReader
ServletRequest#getReader()

リクエストボディを処理するエンコーディング (注2)

リクエストボディを処理するエンコーディング (注2)

注1) PG48587の修正を適用した場合は以下の順で処理されます。
  1. UTF-8
  2. OSのデフォルトエンコーディング
  3. 自動判定(Java言語の自動判定機能(JISAutoDetect)を使用)
注2) 「リクエストボディを処理するエンコーディング」は以下が該当します。

 Tomcat5.5ベースのServletサービスでTomcat4.1ベースのServletサービスと同じ動作にする場合は以下の設定を行ってください。

 また、V8(Tomcat4.1ベースのServletサービス)とV9(Tomcat5.5ベースのServletサービス)では、Webアプリケーション環境設定で「エンコーディング」を指定した場合の動作に以下の改善が行われています。
 これにより、リクエストのContent-Typeヘッダに正しくエンコーディング「charset=」が指定されている場合は、その値が有効となります。

(1)Webアプリケーション環境設定「エンコーディング」

(2)リクエストのContent-Typeのcharset

(3)アプリケーションによるリクエストへのsetCharacterEncoding

Tomcat4.1ベースのServletサービス

Tomcat5.5ベースのServletサービス

指定あり

あり

あり

(3)が有効

(3)が有効

なし

(1)が有効

(2)が有効

なし

あり

(3)が有効

(3)が有効

なし

(1)が有効

(1)が有効

指定なし

あり

あり

(3)が有効

(3)が有効

なし

(2)が有効

(2)が有効

なし

あり

(3)が有効

(3)が有効

なし

デフォルト(ISO-8859-1)

デフォルト(ISO-8859-1)

HTTP TRACEメソッド

 Tomcat5.5ベースのServletサービスでは、HTTP TRACEメソッドはセキュリティ上の理由から使用できません。
 なお、HTTP TRACEメソッドは、Webサイトの利用者が通常使用する機能ではありません。

接続先コネクタの制限

 Tomcat4.1ベースのServletサービスで、Webサーバコネクタの証明書のシリアル番号と発行者識別DNを指定して接続先コネクタの制限を行っていた場合、Tomcat5.5ベースのServletサービスでは、Interstage管理コンソールの以下の設定で、WebサーバコネクタとServletコンテナ間の通信で使用するSSL定義を適切に設定して、接続先コネクタの制限を行ってください。

同時処理数

 Tomcat5.5ベースのServletサービスでは、同時処理数に指定した値のうちの1つは、クライアントシステムからのリクエスト受け付け用として、Servletコンテナの内部処理で使用されます。そのため、指定できる最小値は2になります。

JSP Document(XMLベースのJSP)の属性の順番

 JSP Documents(XML形式のドキュメント)の場合、XMLでは属性の順番が保証されないため、依存するアプリは移行により動作しない場合があります。
 問題が発生する場合は、依存しないよう修正してください。

修正前:
-------------------------------------------------------------------------------
<vsi:loop begin="%= last - s %" end="%= last++ %" />
-------------------------------------------------------------------------------
修正後:
-------------------------------------------------------------------------------
<vsi:loop begin="%= last - s %" end="%= last %" /><jsp:scriptlet>last++;</jsp:scriptlet>
-------------------------------------------------------------------------------

リクエストのURIに'\'を含む場合

 Tomcat5.5ベースのServletサービスでは、リクエストのURIに'\'(エンコードされている場合も該当)を含む場合、Tomcat4.1ベースのServletサービス(PG56136の修正未適用)では呼び出し可能であったコンテンツが呼び出しできなくなることがあります。


目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2007