Apcoordinator ユーザーズガイド |
目次
![]() ![]() |
付録C 旧バージョンとの互換情報(update) |
修正は以下のように行います。
修正前
<taglib> <taglib-uri>uji-model</taglib-uri> <taglib-location>/WEB-INF/uomf.tld</taglib-location> </taglib>
修正後上記の例では、修正後のweb.xmlをServlet仕様バージョン2.4の形式で記述しています。 Servlet仕様バージョン2.4の形式へのweb.xmlの移行については、web.xmlの記述形式の違いを参照してください。
<jsp-config> <taglib> <taglib-uri>uji-model</taglib-uri> <taglib-location>/WEB-INF/ujiall.tld</taglib-location> </taglib> </jsp-config>
二重処理を防止するには、uji:formタグのpostOnceアトリビュート、または、HttpControlStateProfileクラスによる二重処理防止機能を使用してください。二重処理防止機能については、高度なセション管理を参照してください。
なお、以下の条件の場合、uji:controlSectionタグを使用した場合と使用しない場合とで、エラーページ表示時の動作に違いがあります。
この場合、エラーページが以下のように表示されます。
なお、JSPは画面表示を行う手段であるため、例外を発生させるような要因は事前にビジネスクラスで検出し、JSP内では例外が発生しないようにJSP、データBean、ビジネスクラスを作成することを推奨します。
J2EE仕様への適合向上と性能向上の目的で、UJIタグの評価方法に変更が加えられました。これにより、INTERSTAGE WEBCOORDINATOR と Apcoordinatorとで以下の場合にuji:switchタグの動作に違いがあります。
上記の場合、uji:caseタグのコンテントにあるUJIタグの評価タイミングに違いがあります。 INTERSTAGE WEBCOORDINATORの場合、uji:caseの条件が評価され、条件が成立した場合にuji:caseのコンテントのUJIタグが評価されます。Apcoordinatorの場合、uji:caseのコンテントにUJIタグが出現した時点で評価されます。
この違いにより発生する影響について説明します。以下の例を参照してください。
プロパティfullModeの値がfalseの場合、cls="true"を指定したuji:caseの条件は成立しません。この場合でも、Apcoordinatorの場合はuji:caseのコンテントにあるuji:comboBoxタグが評価されます。ここで、"body"データBeanのtermListプロパティの値がnullの場合、uji:comboBoxが使用する項目クラスが取得できないため例外が発生します。一方、INTERSTAGE WEBCOORDINATORの場合はuji:comboBoxが評価されないため例外は発生しません。
<uji:switch bean="body" property="fullMode"> <uji:case cls="true"> <uji:comboBox bean="body" property="teamList" /> ... </uji:case> <uji:case> ... </uji:case> </uji:case>
上記条件に該当する場合、アプリケーションを次のどちらかの方法で修正することにより、Apcoordinatorでも動作します。
<?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"> <context-param> <param-name>factory</param-name> <param-value>sample2.Sample2Factory</param-value> </context-param> <context-param> <param-name>uji.includeSessionScopeBean</param-name> <param-value>false</param-value> </context-param> <jsp-config> <taglib> <taglib-uri>uji-taglib</taglib-uri> <taglib-location>/WEB-INF/ujiall.tld</taglib-location> </taglib> </jsp-config> </web-app>
Apcoordinator V5.0L10、または、INTERSTAGE WEBCOORDINATORで作成したアプリケーションで、isUjiMethodAvailableメソッドをデフォルトのまま使用し、uji.methodリクエストパラメタを使用している場合は、アプリケーションの修正が必要です。 ユーザ定義のアプリケーションクラスを作成し、isUjiMethodAvailableメソッドをオーバライドしてtrueを返却するようにしてください。アプリケーションクラスについては、アプリケーションクラスを参照してください。
Apcoordinator V5.0L10またはINTERSTAGE WEBCOORDINATORで作成したアプリケーションで以下の処理を行っている場合には、アプリケーションを修正して、com.fujitsu.uji.util.Parametersクラスからリクエストパラメタを取得してください。
import com.fujitsu.uji.GenericHandler; import com.fujitsu.uji.DispatchContext; import com.fujitsu.uji.http.HttpDispatchContext; import com.fujitsu.uji.util.Parameters; public class SampleHandler extends GenericHandler { public void someMethod(DispatchContext context, BodyBean dataBean) { Parameters parameters = ((HttpDispatchContext)context).getParameters(); String value = parameters.getSingleValue("userName"); ... } }
Apcoordinator V5.0L10またはINTERSTAGE WEBCOORDINATORで作成したアプリケーションで以下に該当する場合は、アプリケーションを修正して、ファイルサイズの上限値を変更する必要があります。
なお、getMimeTransferSizeLimitメソッドで0を返すことによってサイズの制限を無くすことができますが、セキュリティの観点から上限値を設定することを推奨します。
import com.fujitsu.uji.ApplicationProfile; public class SampleApplication extends ApplicationProfile { public long getMimeTransferSizeLimit() { // ファイルサイズの上限値を32Mバイトに指定します。 return 32*1024*1024; } }
Apcoordinatorを新しいバージョンに置き換えた場合でもアプリケーションが正常に動作するようにするため、UJIタグリファレンスに記載されている場合を除き、UJIタグが生成するHTMLを仮定した処理は作成しないでください。
columnWidth
columnInputWidth
columnInputHeight
indentIcon
indentIconUseImage
header
headerInsets
headerBackground
headerForeground
headerFontStyle
headerFontWeight
headerFontSize
headerTextDecoration
headerAlignmentHorizontal
headerAlignmentVertical
headerRuleWidth
headerRuleColor
headerRuleType
headerNoWrap
headerUseImage
dataInsets
dataBackground
dataForeground
dataFontStyle
dataFontWeight
dataFontSize
dataTextDecoration
dataAlignmentHorizontal
dataAlignmentVertical
dataRuleWidth
dataRuleColor
dataRuleType
dataNoWrap
dataUseImage
dataStripeBackground
dataEmpty
dataEditable
dataCellType
web-app
タグに、以下の例のとおりアトリビュートを追加します。
taglib
タグをjsp-config
タグで囲みます。
修正前
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <context-param> <param-name>factory</param-name> <param-value>sample2.Sample2Factory</param-value> </context-param> <servlet> <servlet-name>download</servlet-name> <servlet-class>updown.DownloadServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>download</servlet-name> <url-pattern>/download</url-pattern> </servlet-mapping> <taglib> <taglib-uri>uji-taglib</taglib-uri> <taglib-location>/WEB-INF/ujiall.tld</taglib-location> </taglib> </web-app>
修正後なお、Interstage Studioを使用している場合は、プロジェクトエクスプローラからプロジェクトを選択し、コンテキストメニューの[J2EEのdeployment descriptorの更新]を選択することでweb.xmlをServlet仕様バージョン2.4の形式に変換できます。
<?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"> <context-param> <param-name>factory</param-name> <param-value>sample2.Sample2Factory</param-value> </context-param> <servlet> <servlet-name>download</servlet-name> <servlet-class>updown.DownloadServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>download</servlet-name> <url-pattern>/download</url-pattern> </servlet-mapping> <jsp-config> <taglib> <taglib-uri>uji-taglib</taglib-uri> <taglib-location>/WEB-INF/ujiall.tld</taglib-location> </taglib> </jsp-config> </web-app>
com.fujitsu.uji.ext.ServletConnection
クラスのinvoke
メソッド
JDK/JRE1.4では、ObjectInputStream.readClassDescriptor
メソッドでClassNotFoundException
が発生すると、ObjectInputStream.readObject
のトップレベルの呼び出し元にはStreamCorruptedException
として反映されていました。また、その例外の原因となる例外は存在しない状態でした。JDK/JRE5.0では、トップレベルの呼び出し元にはInvalidClassException
として反映されるようになりました。また、その例外の原因となる例外は元のClassNotFoundException
となります。
ServletConnection
クラスのinvoke
メソッドは内部でObjectInputStream.readObject
を呼び出しており、ObjectInputStream.readObject
が例外を発生した場合はその例外をそのまま発生させます。このため、JDK/JRE5.0の修正によりObjectInputStream.readObject
が発生する例外が変化するケースにおいては、invoke
メソッドが発生する例外も同様に変化します。invoke
の呼び出し元でStreamCorruptedException
とInvalidClassException
を区別して処理している場合、および、原因となる例外を参照している場合には修正が必要となります。この2つの例外を区別せず、その共通のスーパークラス(java.io.IOException
など)として処理している場合で、かつ、原因となる例外を参照していない場合には影響はありません。
uji:case
タグがある場合、その内容がコンテントを持たないuji:case
タグによって出力されることがあります。
uji:case
タグは何も出力しません。
上記1の動作を前提としているアプリケーションをInterstageのTomcat5.5ベースのサーブレット実行環境に移行する場合は、コンテントを持たないuji:case
タグを修正し、uji:case
タグで出力したい内容を明示的に記述してください。
なお、上記1の動作はApcoordinatorの障害であり、初期化パラメタuji.compatible.clearbody
にtrue
を指定することで、サーブレット実行環境に依存せずに上記2の動作となります。初期化パラメタの詳細は初期化パラメタを参照してください。
uji.servlet.defaultErrorPage
を使用している場合の修正
初期化パラメタuji.servlet.defaultErrorPage
は推奨されません。
以下の製品が提供するアプリケーションサーバを利用する場合には、旧バージョンのサーブレット実行環境(V8.0互換モードのIJServer)でのみ利用することができます。
UjiServlet
を使用する場合において、例外発生時に表示するJSPを指定するには、初期化パラメタuji.servlet.errorPage
を使用してください。uji.servlet.errorPage
の詳細は初期化パラメタを参照してください。
uji.servlet.defaultErrorPage
を使用していたアプリケーションを、uji.servlet.errorPage
を使用するように変更するには、アプリケーションを以下のとおり書き換えてください。
uji.servlet.defaultErrorPage
」を「uji.servlet.errorPage
」に書き換えます。
uji.servlet.defaultErrorPage
で指定しているJSPの書き換え
page
ディレクティブ(<%@ page
〜 %>
)に複数のアトリビュートを指定している場合は、「isErrorPage="true"
」のみ削除します。
<%@ page isErrorPage="true" %>
<%@
〜 %>
)の直後に追加します。
<%! Throwable exception; %> <% exception = (Throwable)request.getAttribute(com.fujitsu.uji.http.UjiServlet.EXCEPTIONKEY); %>
- web.xmlのみを書き換え、
uji.servlet.defaultErrorPage
で指定しているJSPを書き換えなかった場合、JSPの実行時に変数exception
の値がnull
になります。JSPで変数exception
の値がnull
となることを想定していない場合は、JSPの実行時にNullPointerException
が発生します。- 上記1の対処を実施し、上記2の対処を実施しなかった場合は、
uji.servlet.defaultErrorPage
で指定しているJSPのコンパイル時にエラーとなります。
uif:iform
タグを使用しているアプリケーションの運用
uif:iform
タグは推奨されません。INTERSTAGE WEBCOORDINATOR V4.0L10との互換のために残されています。電子フォームを表示させるには、JSPを使用せず、FormServletクラスを継承したサーブレットを作成します。詳細は電子フォームアプリケーションの開発を参照してください。
uif:iform
タグの使用に必要な以下のファイルは標準ではインストールされません。
上記のファイルはFormcoordinator連携互換機能を別途インストールすることにより提供されます。uif:iform
タグを使用したアプリケーションを運用する場合はFormcoordinator連携互換機能をインストールしてください。インストール方法はインストールガイドに記載のフレームワークに関する注意事項を参照してください。
なお、Interstage Studioでは、上記のファイルは提供されません。
目次
![]() ![]() |