Interstage Application Server/Interstage Web Server 移行ガイド |
目次 索引 |
第4章 旧機能から新機能への移行方法 | > 4.2 Servletサービス(Tomcat 5.5ベースのサーブレット実行環境)への移行 |
Tomcat3.1ベースのServletサービス、またはTomcat4.1ベースのServletサービスから、Tomcat5.5ベースのServletサービス(V9のIJServer)へ移行する場合の注意事項について説明します。
特に表中記載のないものについては、設定や動作上の差分はありません。
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の記述形式に変更する場合は、アプリケーションを配備しなおしてください。
http://サーバホスト名:ポート番号/Webアプリケーション名/servlet/サーブレット名
IJServerワークユニットの環境設定で、サーブレット・マッピングの定義を行わずに、上記URLの形式で呼び出すことができる設定に切り替えることができますが、以下の理由から推奨しません。
「V6.0以降のServletサービス」では、Webアプリケーション環境定義ファイル(deployment descriptor)のサーブレット・マッピングで定義されたものしか動作しません。
「V5.1以前のServletサービス」で、サーブレット・マッピングの定義を行わず、以下のURLの形式でサーブレットの呼び出しを行っていた場合は、Webアプリケーション環境定義ファイルにサーブレット・マッピングの定義を行う必要があります。
Tomcat5.5ベースのServletサービスでは、JSP1.2/2.0の仕様の以下のJavaパッケージのクラス以外は、importなしにクラス名のみで直接スクリプトレット使用はできません。
javax.servlet
-Dcom.fujitsu.interstage.j2ee.ijserver.jspImplicitImport=true(英大文字・英小文字の区別なし)
これにより下記のクラスも使用できなくなります。
仕様外のクラスを使用している場合は、下記の対処を行ってください。
Tomcat5.5ベースのServletサービスで仕様外のクラスを使用する場合は、以下のいずれかの対処を行ってください。
【例】header.jspf ------------------------------------------------------------------------- <%@ page import="java.io.*,java.util.*" %> -------------------------------------------------------------------------
【例】deployment descriptor(web.xml) ------------------------------------------------------------------------- <?xml version="1.0" encoding="UTF-8" ?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> ・・・ <jsp-config> <jsp-property-group> <url-pattern>*.jsp</url-pattern> <include-prelude>/WEB-INF/jspf/header.jspf</include-prelude> </jsp-property-group> </jsp-config> ・・・ </web-app> -------------------------------------------------------------------------
Java言語仕様に準拠していないコードや推奨されないコードを含むJSPは、以前のバージョンからの移行により、コンパイルに失敗したり、実行結果が変わったりすることがあります。
移行時にはJSPを見直し、Java言語仕様に従っているか確認してください。
JSP内のJavaコードで、ローカル変数名に“org”を使用している。
⇒ユニークなパッケージ名の先頭に使用される文字列(“org”や“com”など)を、ローカル変数名に使用すべきではありません。
クラスのオートリロード機能とは別に設定可能となりました。
[ワークユニット] > [新規作成]タブ > [詳細設定] > [Servletコンテナ設定] > [JSPのリロード]で設定可能です。
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の修正を適用した場合は以下の順で処理されます。
- UTF-8
- OSのデフォルトエンコーディング
- 自動判定(Java言語の自動判定機能(JISAutoDetect)を使用)
注2) 「リクエストボディを処理するエンコーディング」は以下が該当します。
- リクエストのContent-Typeヘッダで示されるcharset
- WebアプリケーションでリクエストにsetCharacterEncodingメソッドで設定したエンコーディング
- Webアプリケーション環境設定で「エンコーディング」に指定したエンコーディング
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)
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 Documents(XML形式のドキュメント)の場合、XMLでは属性の順番が保証されないため、依存するアプリは移行により動作しない場合があります。
問題が発生する場合は、依存しないよう修正してください。
修正前:
-------------------------------------------------------------------------------
<vsi:loop begin="%= last - s %" end="%= last++ %" />
-------------------------------------------------------------------------------
修正後:
-------------------------------------------------------------------------------
<vsi:loop begin="%= last - s %" end="%= last %" /><jsp:scriptlet>last++;</jsp:scriptlet>
-------------------------------------------------------------------------------
Tomcat5.5ベースのServletサービスでは、リクエストのURIに'\'(エンコードされている場合も該当)を含む場合、Tomcat4.1ベースのServletサービス(PG56136の修正未適用)では呼び出し可能であったコンテンツが呼び出しできなくなることがあります。
目次 索引 |