4.5.32 (Dec 2009)
クロスサイトスクリプティング問題の修正
index.jsp の引数としてJavaScriptの記述を行うと、サニタイズされずに出力される箇所があったためパラメータを必ずサニタイズするように修正
JVMのバージョンチェック後の振る舞いをコントロールするオプションの追加
従来のバージョンでは、製品として評価されていない JVM を使用していた場合、起動時のチェックによって起動画面上にボタンが表示されていました。
このボタンの表示をコントロールするためのオプションが nexaweb-client.xml に show-unknown-vm-status として追加されました。
詳細については 10653 の修正内容を参照ください。
単一の HTTP セッション上で複数の Nexaweb セッションが管理できるようになりました
従来のバージョンでは 1 HTTP セッションに対して 1 Nexaweb セッションが関連付いていましたが、 新しい機能を使用する事で単一の HTTP セッション上で複数の Nexaweb セッションを管理することができるようになりました。
この機能を利用するためのオプションが nexaweb-client.xml に use-http-request-header-for-session-id として追加されました。
詳細については 10672 の修正内容を参照ください。
プッシュコネクションの接続方式の変更
プッシュコネクションの接続方式を変更するためのオプションが追加されました。
詳細については 10661 の修正内容を参照ください。
より完全な ServerDOM 同期のための振る舞いの変更
ServerDOM 同期処理を完全にリクエスト/レスポンスで同期させるために振る舞いの変更をコントロールするためのオプションが追加されました。
詳細については 10662 の修正内容を参照ください。
10233 | DataService の dataSource を複数回定義するとメモリリークが発生する |
10259 | JVM1.3でタブ移動が正常に機能しない |
10367 | index.jspはクロスサイトスクリプティング問題を持っている |
10545 | IMEでテキストフィールドよりも長い文字列を入力している場合に、変換候補となる文字列が見えなくなる場合がある。 |
10547 | maxLength属性を持ったテキストフィールドでIMEによって文字入力を行った場合、テキストの自動スクロールが発生すると、全てのテキストが表示されていない状態になる場合がある |
10568 | autoWrap 属性が "true" に設定されている <textArea/> を使用しており、<textArea/> の中で onTextChange イベントを使用してテキストカーソル位置を取得した場合、自動改行によって正しいカーソル位置を取得できなくなる |
10629 | 互換性:PNGファイルによって半透明処理のされているウインドウの描画処理がおかしい |
10635 | <textArea/> のデータとして単一の \ を Element#setFirstTextChild() メソッドを使用して設定しようとした場合、例外が発生する |
10640 | <listBox/>もしくはテーブル系UIコンポーネントの中にデータが存在していない状態で、コンポーネントにフォーカスをセットして矢印キーをおするとNPEが発生する。 |
10653 | JVMのバージョンチェックによって起動時に表示されるボタンのコントロールを行いたい。 |
10661 | プッシュコネクションの接続要求が他のリクエストに乗る問題のオプション化 |
10662 | ServerDOM同期がサーバー側のマルチスレッド処理によって正しく行われない場合がある |
10663 | XPathの中で"\"を利用できない |
10672 | 1 つのHTTP セッションで複数の Nexaweb セッションのサポート機能を追加 |
10680 | <textArea/> に対してクリップボードから繰り返し同じ文字列長のデータをペーストした場合、ペースト後のテキストカーソルの位置がおかしくなる場合がある |
10681 | IME による入力を行っている場合に、左カーソルキーを繰り返し押し、テキストカーソル位置を移動させると、テキストカーソルの表示が消える場合がある |
10682 | WebSphere 上で Nexaweb を使用しており、サーバーが相当な高負荷状態になった場合、ServerProtocolExceptionが発生する場合がある |
10233 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
DataService の dataSource を複数回定義するとメモリリークが発生する | |||||||||||||
環境 |
| ||||||||||||
対象 | DataServices | ||||||||||||
事象 内容 | DataService の dataSource を同じ id 値で複数回定義し直した場合、過去の定義情報がメモリ上から削除され続け、メモリリークの原因となる | ||||||||||||
修正 内容 | dataSource を同じ id 値で定義し直した場合、過去の id 値によって定義済みの dataSource を削除してから登録するように修正 | ||||||||||||
10259 | |||||||||||||
JVM1.3でタブ移動が正常に機能しない | |||||||||||||
環境 |
| ||||||||||||
対象 | JVM 1.3.x を使用している場合のタブキーによるフォーカス移動 | ||||||||||||
事象 内容 | JVM 1.3.x を使用しており、タブキーによってフォーカスを移動しようとした場合に、タブキーでフォーカスを移動できない場合がある | ||||||||||||
修正 内容 | JVM 1.3.x 使用時にタブキーによってフォーカスが正しくコントロールできるように修正 | ||||||||||||
10367 | |||||||||||||
index.jspはクロスサイトスクリプティング問題を持っている | |||||||||||||
環境 |
| ||||||||||||
対象 | index.jsp, errorBadVM.jsp, errorBuggyVM.jsp, errorCookiesDisabled.jsp, errorJavaScriptDisabled.jsp | ||||||||||||
事象 内容 | jsp ファイルのパラメータとして Javascript の記述を行った場合、クロスサイトスクリプティング問題が発生する | ||||||||||||
修正 内容 | クロスサイトスクリプティング問題が発生しないようにパラメータを必ずサニタイズするように修正 | ||||||||||||
10545 | |||||||||||||
IMEでテキストフィールドよりも長い文字列を入力している場合に、変換候補となる文字列が見えなくなる場合がある。 | |||||||||||||
環境 |
| ||||||||||||
対象 | 全ての文字入力可能 UI コンポーネント | ||||||||||||
事象 内容 | テキストフィールドの幅よりも長い文字列を IME によって一括入力した場合に、変換キーを押して入力文字の変換を行おうとした場合、 テキストフィールドの幅に合わせて表示文字がスクロールしているため、文字列の先頭部分の変換内容が画面上で確認することができない。 | ||||||||||||
修正 内容 | テキストフィールドの幅を超えて IME による文字入力を行っている場合、変換キーが押された場合に変換対象となっている文字列が表示するために自動スクロールするように修正 | ||||||||||||
10547 | |||||||||||||
maxLength属性を持ったテキストフィールドでIMEによって文字入力を行った場合、テキストの自動スクロールが発生すると、全てのテキストが表示されていない状態になる場合がある | |||||||||||||
環境 |
| ||||||||||||
対象 | maxLength を指定可能な全ての文字入力可能 UI コンポーネント | ||||||||||||
事象 内容 | テキストフィールドの幅を超えて IME による文字入力を行っている場合、自動するクロールが発生します。 自動するクロールが発生した後に Enter キーによって IME での入力文字列が確定すると、通常は入力文字がテキストフィールドに表示されますが、 maxLength が指定されている場合、 IME によって確定された文字列が欠ける場合があります。 maxLength によって IME での入力文字列が欠けた場合、テキストフィールド内の表示位置の自動調整が行われないため、 テキストフィールドに文字が入力されていないように見えます。 | ||||||||||||
修正 内容 | IME による変換、入力確定、キャンセル時にテキストフィールド内のスクロール位置を調整するように修正 | ||||||||||||
10568 | |||||||||||||
autoWrap 属性が "true" に設定されている <textArea/> を使用しており、<textArea/> の中で onTextChange イベントを使用してテキストカーソル位置を取得した場合、自動改行によって正しいカーソル位置を取得できなくなる | |||||||||||||
環境 |
| ||||||||||||
対象 | 全ての文字入力可能 UI コンポーネント | ||||||||||||
事象 内容 | autoWrap 属性が "true" に設定されている <textArea/> を使用しており、<textArea/> の中で onTextChange イベントを使用してテキストカーソル位置を取得した場合、 自動改行によって正しいカーソル位置を取得できない | ||||||||||||
修正 内容 | テキストカーソル位置の再計算処理位置を変更し、 onTextChange イベント発生時に正しいテキストカーソル位置を取得できるように修正 | ||||||||||||
10629 | |||||||||||||
互換性:PNGファイルによって半透明処理のされているウインドウの描画処理がおかしい | |||||||||||||
環境 |
| ||||||||||||
対象 | 全てのフローティングコンテナ(ウインドウ、ダイアログ等) | ||||||||||||
事象 内容 | UI コンポーネントの背景画像ファイルとして半透明処理が施されている PNG ファイルを使用している場合に、 背景色の半透明処理が正しく行われない | ||||||||||||
修正 内容 | 背景画像ファイルの描画時に PNG ファイルの半透明処理を考慮するように修正 | ||||||||||||
10635 | |||||||||||||
<textArea/> のデータとして単一の \ を Element#setFirstTextChild() メソッドを使用して設定しようとした場合、例外が発生する | |||||||||||||
環境 |
| ||||||||||||
対象 | 全ての文字列処理 | ||||||||||||
事象 内容 | <textArea/> のデータとして単一の \ を Element#setFirstTextChild() メソッドを使用して設定しようとした場合、例外が発生する | ||||||||||||
修正 内容 | 内部で文字列を扱う際のエスケープ文字の処理内容を修正 この問題は 4.5.18より発生するようになった互換性問題です。 また、4.5.18~4.5.31 においても <textField/> への文字列設定や nexaweb-client.xml の <ensure-pre-4-dot-2-resolution-syntax-compatibility/> が true に設定されている場合には発生しません。 | ||||||||||||
10640 | |||||||||||||
<listBox/>もしくはテーブル系UIコンポーネントの中にデータが存在していない状態で、コンポーネントにフォーカスをセットして矢印キーをおするとNPEが発生する。 | |||||||||||||
環境 |
| ||||||||||||
対象 | <litBox/>, <table/>, <treeTable/>, <tree/> | ||||||||||||
事象 内容 | 対象 UI コンポーネント内に選択可能なデータが存在していない場合に UI コンポーネントがフォーカスを受け取り、矢印キーを押すと NullPointerException が発生する | ||||||||||||
修正 内容 | 選択可能データが存在していない場合に NullPointerException が発生しないように修正 | ||||||||||||
10653 | |||||||||||||
JVMのバージョンチェックによって起動時に表示されるボタンのコントロールを行いたい。 | |||||||||||||
対象 | 起動時の JVM バージョンチェッカ | ||||||||||||
機能 追加 内容 | 起動時の JVM バージョンチェック時に未知の新しい JVM が存在した場合、起動画面にボタンが表示され、 ボタンをクリックしなければ Nexaweb アプリケーションを開始することができませんでしたが、 このボタンの表示有無をコンフィグレーションによってコントロールできるように以下のオプションが nexaweb-client.xml に機能追加されました。 /client-app/launch-configuration/progress-handler/show-unknown-vm-status
show-unknown-vm-status は以下の 2 つの値を設定することができます。
4.5.31 以前のバージョンと同様の振る舞いを期待する場合には「true」を指定してください。 nexaweb-client.xml の設定例(抜粋) <client-app> ... <launch-configuration> <!-- The launch-ui section allows users to customize the look of the --> <!-- Nexaweb-loading screen. --> <launch-ui> <!-- After 4.2, do not change "class=" assignment --> <progress-handler class="com.nexaweb.client.launcher.DefaultProgressHandler"> ... <!-- shows a "more info" button in case JVM cannot be determined if true --> <show-unknown-vm-status>false</show-unknown-vm-status> </progress-handler> </launch-ui> </launch-configuration> ... </client-app> | ||||||||||||
10661 | |||||||||||||
プッシュコネクションの接続要求が他のリクエストに乗る問題のオプション化 | |||||||||||||
環境 |
| ||||||||||||
対象 | プッシュコネクションの接続処理全般 | ||||||||||||
事象 内容 | マルチスレッドアプリケーションとしてアプリケーションが実装されており、独自スレッドからサーバーリクエストを行う処理が存在している場合に、 プッシュコネクションの接続要求が通常のリクエスト処理に相乗りしてしまい、サーバープッシュデータがプッシュコネクションではないコネクションを通じて レスポンスされる可能性があり、その場合にプッシュデータに異常が生じる可能性がある | ||||||||||||
修正 内容 | プッシュコネクションの接続要求が通常のリクエスト処理に相乗りしないように修正 この修正により振る舞いが変更されるため、下位互換を確保のために以下のオプションが nexaweb-client.xml に追加されました。 /client-app/open-push-without-protocol
4.5.31 以前のバージョンと同様の振る舞いを期待する場合には「false」を指定してください。
また、このコンフィグレーションは Nexaweb Platform 4.5.16 の 9963 の修正によって 追加された synchronize-nexaweb-server-requests が true に設定されている場合、効果がありません。 指定の詳細な内容については 4.5.32 に同梱される nexaweb-client.xml を参照ください。 nexaweb-client.xml の設定例(抜粋) <client-app> ... <!-- =================================================================== --> <!-- In multithreaded UI applications that use persistent connections, --> <!-- this value indicates to open the push connection cleanly, ensuring --> <!-- that there will be no possibility for timing issues transmitting --> <!-- outbound client information to the server when a push connection --> <!-- needs to re-establish. --> <!-- It is not recommended to change this setting. --> <!-- If synchronize-nexaweb-server-requests is set to true, this setting --> <!-- will have no effect, and the push connection will ALWAYS be opened --> <!-- without additional outbound protocol information, regardless. --> <!-- =================================================================== --> <open-push-without-protocol>true</open-push-without-protocol> ... </client-app> | ||||||||||||
10662 | |||||||||||||
ServerDOM同期がサーバー側のマルチスレッド処理によって正しく行われない場合がある | |||||||||||||
環境 |
| ||||||||||||
対象 | ServerDOM 同期を使用している場合 | ||||||||||||
事象 内容 | ServerDOM 同期を使用して連続したリクエストが発生する状況で、1度目のレスポンス処理が完了する前に次のリクエスト処理が開始され、 次のリクエスト処理の中で一つ前のレスポンス処理が完了していない処理の値を参照する場合にレスポンス処理が完了していないため、 ServerDOM 同期が終了しておらず、想定外の値を ServerDOM から取得する場合がある | ||||||||||||
修正 内容 | ServerDOM 同期処理が完了するまで次のリクエスト処理が開始されないように修正。 Nexaweb Server ではパフォーマンス向上のために、実際にクライアントにレスポンスするストリームデータとサーバー上の ServerDOM を 同期するための更新処理がサーバー上でマルチスレッド化されて処理されます。 このため、クライアントからのリクエストがキューに蓄積される程の頻発するリクエストが発生した場合、場合によっては、 以前のレスポンスによる ServerDOM 同期処理と、次のリクエストの処理が並行して実行される可能性があります。 この場合に、リクエスト処理から ServerDOM を参照した場合、以前のレスポンスによる ServerDOM 同期処理が完了していない可能性があります。 この修正により振る舞いが変更されるため、下位互換を確保のために以下のオプションが nexaweb-server.xml に追加されました。 /server/output-stream-wrapper
4.5.31 以前のバージョンと同様の振る舞いを期待する場合には「false」を指定してください。 nexaweb-server.xml の設定例(抜粋) <server> ... <!-- Use the following if you want the client to wait until the server --> <!-- completes Server DOM processing request (make it synchronous). --> <!-- Default is asynchronous processing which allows the client not --> <!-- to wait for the server to complete absorbing Server DOM stream. --> <output-stream-wrapper waitForServerToCompleteProcessing="false"/> ... </server> この新しい振る舞いはパフォーマンスの劣化を伴います。
また、以下の条件は必須条件ではありませんが、問題を発生させる要因として大きな要因になります。
| ||||||||||||
10663 | |||||||||||||
XPathの中で"\"を利用できない | |||||||||||||
環境 |
| ||||||||||||
対象 | 全ての文字列処理 | ||||||||||||
事象 内容 | XPath で "\" 文字のみ、"\" 文字で終わる評価式を使用した場合、 XPath が正しく処理されない。 | ||||||||||||
修正 内容 | 内部で文字列を扱う際のエスケープ文字の処理内容を修正。 | ||||||||||||
10672 | |||||||||||||
1 つのHTTP セッションで複数の Nexaweb セッションのサポート機能を追加 | |||||||||||||
機能 追加 内容 | Nexaweb ではこれまで、一つの HTTP セッションに対して Nexaweb のセッション情報は 1 対 1 で関連付いていました。 これを解決するために、一つの HTTP セッションに対して複数の Nexaweb セッションが管理できるように以下のオプションが nexaweb-client.xml に機能追加されました。 /client-app/use-http-request-header-for-session-id
4.5.31 以前のバージョンと同様の振る舞いを期待する場合には「false」を指定してください。 nexaweb-client.xml の設定例(抜粋) <client-app> ... <use-http-request-header-for-session-id>true</use-http-request-header-for-session-id> ... </client-app> | ||||||||||||
10680 | |||||||||||||
<textArea/> に対してクリップボードから繰り返し同じ文字列長のデータをペーストした場合、ペースト後のテキストカーソルの位置がおかしくなる場合がある | |||||||||||||
環境 |
| ||||||||||||
対象 | 全ての文字入力可能 UI コンポーネント | ||||||||||||
事象 内容 | 同じな文字列長のコピーデータを繰り返し、 <textArea/> に対して貼り付けた場合、ペースト後のテキストカーソル位置がおかしくなる場合があります。 ペースト後は通常カーソル位置は貼り付けデータの末尾に移動すべきですが、この問題が発生した場合、カーソル位置は貼り付けデータの末尾ではなく先頭になる場合があります。 | ||||||||||||
修正 内容 | データの貼り付け後にテキストカーソル位置が必ず貼り付けデータの末尾に移動するように修正 | ||||||||||||
10681 | |||||||||||||
IME による入力を行っている場合に、左カーソルキーを繰り返し押し、テキストカーソル位置を移動させると、テキストカーソルの表示が消える場合がある | |||||||||||||
環境 |
| ||||||||||||
対象 | 全ての文字入力可能 UI コンポーネント | ||||||||||||
事象 内容 | IME を使用して文字列を入力した際にテキストフィールドの幅よりも IME による入力文字列が長くなった場合に自動スクロールが起こります。 この自動スクロールが起こった後に IME による入力を確定し、確定後の文字列上をカーソルキーを使用して左に移動させた場合、テキストカーソルの表示が消える場合があります。 | ||||||||||||
修正 内容 | 自動スクロールが起こった場合の表示位置を計算するロジックを修正し、テキストカーソルが消えないように修正 | ||||||||||||
10682 | |||||||||||||
WebSphere 上で Nexaweb を使用しており、サーバーが相当な高負荷状態になった場合、ServerProtocolExceptionが発生する場合がある | |||||||||||||
環境 |
| ||||||||||||
対象 | WebSphrer を使用しており、サーバーが相当な高負荷状態になった場合のサーバー処理 | ||||||||||||
事象 内容 | WebSphrer を使用しており、サーバーが相当な高負荷状態になった場合のリクエスト受付処理で ArrayIndexOutOfBoundsException が発生する場合がある | ||||||||||||
修正 内容 | この問題は、 Nexaweb 内部で使用している SimpleDateFormat のインスタンスがスレッドセーフでなかったこと発生していました。 この問題を修正するために内部的に SimpleDateFormat インスタンスを使用する際に同期処理を行うように変更しました。 |