Interstage Application Server/Interstage Web Server 移行ガイド |
目次 索引 |
第4章 旧機能から新機能への移行方法 | > 4.2 Servletサービス(Tomcat 5.5ベースのサーブレット実行環境)への移行 |
Tomcat3.1ベースのServletサービス、Tomcat4.1ベースのServletサービスと、Tomcat5.5ベースのServletサービス(V9のIJServer)のアプリケーション動作の非互換項目を以下に示します。該当する機能をWebアプリケーションで使用している場合には、Webアプリケーションを修正してください。
No. |
機能 |
Tomcat3.1ベースのServletサービス |
Tomcat4.1ベースのServletサービス |
Tomcat5.5ベースのServletサービス |
---|---|---|---|---|
1 |
カスタムタグのTag#release()メソッド |
カスタムタグの開発で実装するjavax.servlet.jsp.tagext.Tagインタフェースのpublic void release()メソッドは、カスタムタグを使用したページの呼び出しが終わるごとに呼び出されます。 |
カスタムタグの開発で実装するjavax.servlet.jsp.tagext.Tagインタフェースのpublic void release()メソッドは、Webアプリケーション終了時に呼び出されます。 |
|
2 |
Webブラウザに返却されるステータスコード |
Webアプリケーション環境定義ファイルに<error-page>タグが設定されている場合は、ステータスコードは200が返却されます。 |
Webアプリケーション環境定義ファイルに<error-page>タグが設定されている場合にも、発生した現象のステータスコードがそのまま返却されます。 |
Webアプリケーション環境定義ファイルに<error-page>タグが設定されている場合にも、発生した現象のステータスコードがそのまま返却されます。 |
3 |
JSPの呼び出し |
JSPファイルを更新した場合、前回コンパイルされたJSPファイルとファイル更新日時が異なる場合に反映されます。(反映はServletコンテナ再起動、またはリロード機能有効時) |
JSPまたはJSPから静的includeしているファイルを更新した場合、前回コンパイルされた日時よりも新しい日付のJSPファイルの場合に反映されます。 |
|
4 |
Webアプリケーション環境定義ファイルの<servlet>タグ内の<load-on-startup>タグ |
0を指定した場合は、サーブレット・コンテナ起動時にロードされません。 |
0を指定した場合は最後にロードされます。 |
Servletの仕様に準拠し、0を指定した場合は最初にロードされます。 |
5 |
Webブラウザにスタックトレースを表示 |
サーブレット・コンテナ環境定義ファイルのContextManagerタグのerrResponse属性で、リクエストの処理でErrorやExceptionが発生した場合、Webブラウザにスタックトレースを表示するかどうかを指定します。 |
内部の情報が漏洩する可能性があるため、リクエストの処理でErrorやExceptionが発生した場合、Webブラウザにスタックトレースを表示しません。 |
|
6 |
Webアプリケーション環境定義ファイルの<servlet-mapping>タグ内の<servlet-name>タグ |
指定していない名前を記述した場合は、無効となります。 |
指定していない名前を記述した場合は、Webアプリケーションの起動に失敗します。 |
|
7 |
Webアプリケーション環境定義ファイルの<welcome-file-list>タグ内の<welcome-file>タグ |
welcome fileを省略した場合、サーブレット・コンテナ環境定義ファイルで記述するContext定義のdirList属性の指定により、その実体となるディレクトリ配下のディレクトリやファイルの一覧、またはステータスコード404(ファイルが存在しない)が表示されます。 |
welcome fileを省略した場合、デフォルト設定が使用されます。デフォルト設定のファイルは以下の順番で有効になります。
welcome file(省略時はデフォルト設定)に該当するファイルがない場合は、Interstage管理コンソールの[ワークユニット] > “ワークユニット名” > [環境設定]タブ > [詳細設定] > [Servletコンテナ設定] > [ファイルの一覧表示]に設定されている値によって、ステータスコード404(ファイルが存在しない)、またはその実体となるディレクトリ配下のディレクトリやファイルの一覧が表示されます。 |
|
8 |
Webアプリケーション環境定義ファイルの<env-entry>タグ内の<env-entry-value>タグ |
<env-entry-value>タグを省略して環境エントリをlookupした場合にはjavax.naming.NamingExceptionまたはそのサブクラスが投げられます。 |
<env-entry-value>タグを省略した場合には、デフォルト値が設定されます。 (注1) |
|
Tomcat3.1ベースのServletサービスと同じ動作をさせる場合には、Interstage管理コンソールの[ワークユニット] > “ワークユニット名” > [環境設定]タブ > [詳細設定] > [ワークユニット設定] > [JavaVMオプション]に“-Dcom.fujitsu.interstage.jservlet.naming.defaultenventry=FALSE”を設定してください。 |
Tomcat3.1ベースのServletサービスと同じ動作をさせる場合には、deployment descriptor(web.xml)から、該当する<env-entry>タグを削除してください。 |
|||
9 |
Webアプリケーション環境定義ファイルの<taglib-location>タグで存在しないパスを指定した場合 |
無効となります。 |
Webアプリケーションの起動に失敗します。 |
|
10 |
WEB-INF配下にXMLの文法に誤りのあるTagLibraryDescriptorファイルが存在した場合 |
“XML parsing error on file”がコンテナの標準出力、標準エラー出力のログに出力されるが、サーブレット・コンテナの起動に成功します。 |
メッセージ“IJServer15111”がコンテナログに出力され、Servletコンテナの起動に失敗します。 |
|
11 |
Webアプリケーション環境定義ファイルの<servlet-mapping>タグ内の<url-pattern>タグ |
特定の拡張子をもつURLを指定した場合(例:*.jsp)は、URL内の“/”と“/”で囲まれた箇所もマッピング対象となります。 |
特定の拡張子をもつURLを指定した場合(例:*.jsp)は、URL内の“/”と“/”で囲まれた箇所もマッピング対象とならず、最後の“/”以降がマッピング対象となります。 |
|
12 |
Webアプリケーション環境定義ファイルの<welcome-file-list>タグ内の<welcome-file>タグに指定されたファイルを表示する場合の動作 |
|
(注4) |
|
13 |
複数のAccept-Languageヘッダを持つリクエストを受け付けた場合のHttpServletRequest#getHeaders()メソッドの動作 (注3) |
※サーブレット・コンテナ環境定義ファイルのContextManagerタグ内 |
“,”で区切られた値を1つの要素としてEnumerationが返されます。 |
|
14 |
レスポンスのデフォルトLocale |
"en"です。 |
"en_US"です。 |
Servletの仕様に準拠し、デフォルトではサーバのLocaleとなります。 |
15 |
サーブレットのserviceが、永久的に使用不能な状態であること示すUnavailableExceptionをthrowした時の動作 |
Servlet2.3では規定されていませんが、基本的にステータスコード500を返却。 |
Servlet2.3では規定されていませんが、基本的にステータスコード503を返却。 |
Servlet2.4の仕様に従い、ステータスコード404を返却。 |
16 |
deployment descriptor(web.xml)のtaglibタグ |
<taglib>タグは、<web-app>タグの直下に記載します。 |
<taglib>タグは、<web-app>タグの直下に記載します。 |
<taglib>タグは、<jsp-config>タグ配下に記載します。 |
17 |
server.xml定義ファイルへのrealmの設定 |
− |
Tomcat4.1と同様のrealmタグを設定することができます。 |
できません。ディレクトリサービスを使用してください。 |
18 |
「コンテキストの共有」有効時のセション |
− |
Webアプリケーション環境設定の「コンテキストの共有」を「する」に設定し、Webアプリケーションから別のWebアプリケーションに、RequestDispatcherを使用してディスパッチした場合、ディスパッチ前と後で使用するセションは同じとなります。 |
Webアプリケーション環境設定の「コンテキストの共有」を「する」に設定し、Webアプリケーションから別のWebアプリケーションに、RequestDispatcherを使用してディスパッチした場合、Servletの仕様に厳密に従い、セションは別のものとなります。セションの属性は共有されません。ディスパッチ前のセションの情報(属性)をディスパッチ後に使用したい場合は、リクエストの属性として(ServletRequest#setAttributeメソッド等を使用して)受渡を行う等、アプリケーションで対応してください。 |
19 |
HttpSessionのgetAttribute(null)呼び出し時 |
NullPointerExceptionとなります。 |
nullが返却されます。 |
NullPointerExceptionとなります。 |
20 |
JSPのコンパイル |
JSPの仕様に沿っていなくてもコンパイル/実行できる場合がありました。 |
JSP2.0の仕様に沿っていない場合は動作しない可能性があります。
修正しない場合は、事前に充分な動作検証を行ってください。 |
|
21 |
HttpSessionListenerのsessionDestroyed |
セションが破棄された後に呼び出されます。 |
セションが破棄される前に呼び出されます。 |
|
22 |
HttpSessionBindingListenerのvalueBound |
オブジェクトがHttpSessionのgetAttributeで取得できる状態になってから呼び出されます。 |
オブジェクトがHttpSessionのgetAttributeで取得できる状態になる前に呼び出されます。 |
|
23 |
Webアプリケーション環境定義ファイルのタグの順番 |
<env-entry>タグ配下は以下の順で記載します。 <env-entry> |
<env-entry>タグ配下は以下の順で記載します。 <env-entry> |
|
24 |
JSPのタグの書式 |
以下の例のように、タグ〜閉じタグ(ETag)間に子タグやBODYがなく、改行などがあっても動作する場合がありました。 |
JSP2.0では許可される書式が明示され、左記のような記述はコンパイル時にエラーとなります。JSPの仕様に従い、以下のようにしてください。 JSP2.0の仕様の詳細は、JavaServer Pages 2.0 Specificationを参照してください。 |
|
25 |
JSPのBeanのプロパティ値がnullの場合の動作 |
JSPのBeanのプロパティ値がnullの場合、<jsp:getProperty>アクションの出力は""(空文字列)となります。 例:以下のようなJSPで、プロパティ"age"値がnullの場合 |
JSPの仕様に従い、出力は"null"となります。
|
|
26 |
Webアプリケーション環境定義ファイルの<security-constraint>タグ内の<auth-constraint>タグ内の<role-name>タグ |
"*"を指定する場合、<security-role>タグに有効な<role-name>タグが定義されていなければリソースにアクセスできません。 |
"*"を指定する場合、<security-role>タグを定義しなくてもリソースにアクセスできます。 |
"*"を指定する場合、<security-role>タグに有効な<role-name>タグが定義されていなければリソースにアクセスできません。 |
27 |
JSPのファイルエンコーディング |
JSP1.2に従い、JSPファイルを読み込むエンコーディングは、コンパイル単位でした。include先のJSPファイルも、include元とおなじエンコーディングで読み込まれます。 例:deployment descriptor(web.xml)をServlet2.4のものに修正し、JSPプロパティグループで指定する。 詳細は、JSP2.0の仕様(JavaServer Pages 2.0 Specification)を参照してください。 |
JSP2.0に従い、JSPファイルを読み込むエンコーディングは、ファイル単位となります。include先のJSPファイルを読み込むエンコーディングは、include元のJSPファイルを読み込むエンコーディングの影響を受けません。(デフォルトISO-8859-1) |
|
28 |
JSPでカスタムタグライブラリ使用時の動作 |
|
|
|
29 |
サーブレットコンテキストの初期化パラメタ |
サーブレットコンテキストの初期化パラメタ(<context-param>タグ)の複数指定時、重複したパラメタ名(<param-name>タグ)がある場合、最後に指定したものが有効となります。 |
重複したパラメタ名は指定できません。定義エラーとなります。 |
|
30 |
無効なセションのgetLastAccessedTimeメソッド呼び出し |
無効なセション(破棄やタイムアウトしたセション)のgetLastAccessedTimeメソッドを呼び出し可能です。 |
無効なセション(破棄やタイムアウトしたセション)のgetLastAccessedTimeメソッドを呼び出した場合、IllegalStateExceptionとなります。 |
env-entry-type
エントリ値
java.lang.Boolean
Boolean.FALSE
java.lang.Byte
値0のByteオブジェクト
java.lang.Character
値0のCharacterオブジェクト
java.lang.String
なし
注) javax.naming.NamingExceptionまたはそのサブクラスが投げられます。java.lang.Short
値0のShortオブジェクト
java.lang.Integer
値0のIntegerオブジェクト
java.lang.Long
値0のLongオブジェクト
java.lang.Float
値0のFloatオブジェクト
java.lang.Double
値0のDoubleオブジェクト
例) <welcome-file>が“/jsp/welcome.jsp”、Webアプリケーション名が“sample”、JSPからのリンクが“../next.jsp”の場合、リンク先を、“/sample/next.jsp”とする。
動的コンテンツ(JSPやServlet)の場合は、以下のようにコンテキストパスを動的に取得することも可能です。(推奨)
リンク先を、request.getContextPath()+"/next.jsp" とする。
※実際には、必要に応じてHttpServletResponseのencodeURLメソッド等をあわせて使用してください。
目次 索引 |