| 10233 |
DataService の dataSource を複数回定義するとメモリリークが発生する
|
| 環境 |
| OS | : | 全て |
| ブラウザ | : | 全て |
| JVM | : | 全て |
| Nexaweb Platform | : | 全て |
|
| 対象 |
DataServices
|
事象 内容 |
DataService の dataSource を同じ id 値で複数回定義し直した場合、過去の定義情報がメモリ上から削除され続け、メモリリークの原因となる
|
修正 内容 |
dataSource を同じ id 値で定義し直した場合、過去の id 値によって定義済みの dataSource を削除してから登録するように修正
|
| 10259 |
JVM1.3でタブ移動が正常に機能しない
|
| 環境 |
| OS | : | 全て |
| ブラウザ | : | 全て |
| JVM | : | 1.3.x |
| Nexaweb Platform | : | 全て |
|
| 対象 |
JVM 1.3.x を使用している場合のタブキーによるフォーカス移動
|
事象 内容 |
JVM 1.3.x を使用しており、タブキーによってフォーカスを移動しようとした場合に、タブキーでフォーカスを移動できない場合がある
|
修正 内容 |
JVM 1.3.x 使用時にタブキーによってフォーカスが正しくコントロールできるように修正
|
| 10367 |
index.jspはクロスサイトスクリプティング問題を持っている
|
| 環境 |
| OS | : | 全て |
| ブラウザ | : | 全て |
| JVM | : | 全て |
| Nexaweb Platform | : | 全て |
|
| 対象 |
index.jsp, errorBadVM.jsp, errorBuggyVM.jsp, errorCookiesDisabled.jsp, errorJavaScriptDisabled.jsp
|
事象 内容 |
jsp ファイルのパラメータとして Javascript の記述を行った場合、クロスサイトスクリプティング問題が発生する
|
修正 内容 |
クロスサイトスクリプティング問題が発生しないようにパラメータを必ずサニタイズするように修正
|
| 10545 |
IMEでテキストフィールドよりも長い文字列を入力している場合に、変換候補となる文字列が見えなくなる場合がある。
|
| 環境 |
| OS | : | 全て |
| ブラウザ | : | 全て |
| JVM | : | 全て |
| Nexaweb Platform | : | 全て |
|
| 対象 |
全ての文字入力可能 UI コンポーネント
|
事象 内容 |
テキストフィールドの幅よりも長い文字列を IME によって一括入力した場合に、変換キーを押して入力文字の変換を行おうとした場合、
テキストフィールドの幅に合わせて表示文字がスクロールしているため、文字列の先頭部分の変換内容が画面上で確認することができない。
|
修正 内容 |
テキストフィールドの幅を超えて IME による文字入力を行っている場合、変換キーが押された場合に変換対象となっている文字列が表示するために自動スクロールするように修正
|
| 10547 |
maxLength属性を持ったテキストフィールドでIMEによって文字入力を行った場合、テキストの自動スクロールが発生すると、全てのテキストが表示されていない状態になる場合がある
|
| 環境 |
| OS | : | 全て |
| ブラウザ | : | 全て |
| JVM | : | 全て |
| Nexaweb Platform | : | 全て |
|
| 対象 |
maxLength を指定可能な全ての文字入力可能 UI コンポーネント
|
事象 内容 |
テキストフィールドの幅を超えて IME による文字入力を行っている場合、自動するクロールが発生します。
自動するクロールが発生した後に Enter キーによって IME での入力文字列が確定すると、通常は入力文字がテキストフィールドに表示されますが、
maxLength が指定されている場合、 IME によって確定された文字列が欠ける場合があります。
maxLength によって IME での入力文字列が欠けた場合、テキストフィールド内の表示位置の自動調整が行われないため、
テキストフィールドに文字が入力されていないように見えます。
|
修正 内容 |
IME による変換、入力確定、キャンセル時にテキストフィールド内のスクロール位置を調整するように修正
|
| 10568 |
autoWrap 属性が "true" に設定されている <textArea/> を使用しており、<textArea/> の中で onTextChange イベントを使用してテキストカーソル位置を取得した場合、自動改行によって正しいカーソル位置を取得できなくなる
|
| 環境 |
| OS | : | 全て |
| ブラウザ | : | 全て |
| JVM | : | 全て |
| Nexaweb Platform | : | 全て |
|
| 対象 |
全ての文字入力可能 UI コンポーネント
|
事象 内容 |
autoWrap 属性が "true" に設定されている <textArea/> を使用しており、<textArea/> の中で onTextChange イベントを使用してテキストカーソル位置を取得した場合、
自動改行によって正しいカーソル位置を取得できない
|
修正 内容 |
テキストカーソル位置の再計算処理位置を変更し、 onTextChange イベント発生時に正しいテキストカーソル位置を取得できるように修正
|
| 10629 |
互換性:PNGファイルによって半透明処理のされているウインドウの描画処理がおかしい
|
| 環境 |
| OS | : | 全て |
| ブラウザ | : | 全て |
| JVM | : | 全て |
| Nexaweb Platform | : | 全て |
|
| 対象 |
全てのフローティングコンテナ(ウインドウ、ダイアログ等)
|
事象 内容 |
UI コンポーネントの背景画像ファイルとして半透明処理が施されている PNG ファイルを使用している場合に、
背景色の半透明処理が正しく行われない
|
修正 内容 |
背景画像ファイルの描画時に PNG ファイルの半透明処理を考慮するように修正
|
| 10635 |
<textArea/> のデータとして単一の \ を Element#setFirstTextChild() メソッドを使用して設定しようとした場合、例外が発生する
|
| 環境 |
| OS | : | 全て |
| ブラウザ | : | 全て |
| JVM | : | 全て |
| Nexaweb Platform | : | 4.5.18~ |
|
| 対象 |
全ての文字列処理
|
事象 内容 |
<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が発生する。
|
| 環境 |
| OS | : | 全て |
| ブラウザ | : | 全て |
| JVM | : | 全て |
| Nexaweb Platform | : | 全て |
|
| 対象 |
<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
| ※ |
progress-handler は <progress-handler class="com.nexaweb.client.launcher.DefaultProgressHandler"> の場合に限ります。
|
show-unknown-vm-status は以下の 2 つの値を設定することができます。
- true : 動作未確認な JVM 上で稼働させる場合、ボタンを表示させる(デフォルト)
- false : 動作未確認な JVM 上で稼働している場合であってもボタンを表示させない
4.5.31 以前のバージョンと同様の振る舞いを期待する場合には「true」を指定してください。
指定の詳細な内容については 4.5.32 に同梱される nexaweb-client.xml を参照ください。
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 |
プッシュコネクションの接続要求が他のリクエストに乗る問題のオプション化
|
| 環境 |
| OS | : | 全て |
| ブラウザ | : | 全て |
| JVM | : | 全て |
| Nexaweb Platform | : | 全て |
|
| 対象 |
プッシュコネクションの接続処理全般
|
事象 内容 |
マルチスレッドアプリケーションとしてアプリケーションが実装されており、独自スレッドからサーバーリクエストを行う処理が存在している場合に、
プッシュコネクションの接続要求が通常のリクエスト処理に相乗りしてしまい、サーバープッシュデータがプッシュコネクションではないコネクションを通じて
レスポンスされる可能性があり、その場合にプッシュデータに異常が生じる可能性がある
|
修正 内容 |
プッシュコネクションの接続要求が通常のリクエスト処理に相乗りしないように修正
この修正により振る舞いが変更されるため、下位互換を確保のために以下のオプションが nexaweb-client.xml に追加されました。
/client-app/open-push-without-protocol
open-push-without-protocol は以下の 2 つの値を設定することができます。
- true : プッシュコネクションの接続要求を必ず独立したリクエストとして扱う
- false : プッシュコネクションの接続要求を必ず独立したリクエストとして扱わない(デフォルト)
4.5.31 以前のバージョンと同様の振る舞いを期待する場合には「false」を指定してください。
| ※ |
4.5.32 以上の nexaweb-client.xml ではこのコンフィグレーションの値が true として設定された初期設定値を保持しています。
このため、 4.5.32 以上のバージョンを使用してプロジェクトを新規作成した場合はこの設定値の初期値は true となります。
設定項目が存在しない場合のデフォルト値は false になります。
|
また、このコンフィグレーションは Nexaweb Platform 4.5.16 の 9963 の修正によって
追加された synchronize-nexaweb-server-requests が true に設定されている場合、効果がありません。
synchronize-nexaweb-server-requests が true の場合、このコンフィグレーションは常に 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同期がサーバー側のマルチスレッド処理によって正しく行われない場合がある
|
| 環境 |
| OS | : | 全て |
| ブラウザ | : | 全て |
| JVM | : | 全て |
| Nexaweb Platform | : | 全て |
|
| 対象 |
ServerDOM 同期を使用している場合
|
事象 内容 |
ServerDOM 同期を使用して連続したリクエストが発生する状況で、1度目のレスポンス処理が完了する前に次のリクエスト処理が開始され、
次のリクエスト処理の中で一つ前のレスポンス処理が完了していない処理の値を参照する場合にレスポンス処理が完了していないため、
ServerDOM 同期が終了しておらず、想定外の値を ServerDOM から取得する場合がある
|
修正 内容 |
ServerDOM 同期処理が完了するまで次のリクエスト処理が開始されないように修正。
Nexaweb Server ではパフォーマンス向上のために、実際にクライアントにレスポンスするストリームデータとサーバー上の ServerDOM を
同期するための更新処理がサーバー上でマルチスレッド化されて処理されます。
このため、クライアントからのリクエストがキューに蓄積される程の頻発するリクエストが発生した場合、場合によっては、
以前のレスポンスによる ServerDOM 同期処理と、次のリクエストの処理が並行して実行される可能性があります。
この場合に、リクエスト処理から ServerDOM を参照した場合、以前のレスポンスによる ServerDOM 同期処理が完了していない可能性があります。
この修正により振る舞いが変更されるため、下位互換を確保のために以下のオプションが nexaweb-server.xml に追加されました。
/server/output-stream-wrapper
output-stream-wrapper は waitForServerToCompleteProcessing の属性値として以下の 2 つの値を設定することができます。
- true : サーバー処理が完了するのを待ちます。
- false : サーバー処理が完了するのを待ちません(デフォルト)。
4.5.31 以前のバージョンと同様の振る舞いを期待する場合には「false」を指定してください。
指定の詳細な内容については 4.5.32 に同梱される nexaweb-server.xml を参照ください。
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>
この新しい振る舞いはパフォーマンスの劣化を伴います。
このため、このオプションを有効にする場合は、必要性について十分に吟味するよう注意してください。
一般的にこの問題が原因で問題が引き起こされることは非常に希です。
この問題が発生する場合は、以下の条件を全て満たしている必要があります。
- ServerDOM 同期オプションを使用している場合
- マルチスレッド処理によってクライアントからのリクエストがキューに蓄積され、連続したリクエストが発生する場合
- サーバー処理の中で、キューに蓄積されている自身のリクエストよりも前のリクエスト処理の結果更新されるであろう ServerDOM の値を参照している場合
- ServerDOM 値を参照した場合に、以前の処理によって更新されている値を正しく取得できない場合、処理場問題が生じる場合
また、以下の条件は必須条件ではありませんが、問題を発生させる要因として大きな要因になります。
- レスポンス処理の結果クライアントに戻される更新データが多量である場合
データが多量である場合、 ServerDOM 同期処理に時間が掛かるため、非同期状態が引き起こされやすくなります。
|
| 10663 |
XPathの中で"\"を利用できない
|
| 環境 |
| OS | : | 全て |
| ブラウザ | : | 全て |
| JVM | : | 全て |
| Nexaweb Platform | : | 全て |
|
| 対象 |
全ての文字列処理
|
事象 内容 |
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
use-http-request-header-for-session-id は以下の 2 つの値を設定することができます。
- true : HTTP セッションとの関連づけの管理にリクエストヘッダを使用し、 1 HTTP セッションに対して複数 Nexaweb セッションを管理する
- false : HTTP セッションとの関連づけの管理に Cookie を使用し、 1 HTTP セッションに対して 1 Nexaweb セッションを管理する(デフォルト)
4.5.31 以前のバージョンと同様の振る舞いを期待する場合には「false」を指定してください。
指定の詳細な内容については 4.5.32 に同梱される nexaweb-client.xml を参照ください。
nexaweb-client.xml の設定例(抜粋)
<client-app>
...
<use-http-request-header-for-session-id>true</use-http-request-header-for-session-id>
...
</client-app>
|
| 10680 |
<textArea/> に対してクリップボードから繰り返し同じ文字列長のデータをペーストした場合、ペースト後のテキストカーソルの位置がおかしくなる場合がある
|
| 環境 |
| OS | : | 全て |
| ブラウザ | : | 全て |
| JVM | : | 全て |
| Nexaweb Platform | : | 全て |
|
| 対象 |
全ての文字入力可能 UI コンポーネント
|
事象 内容 |
同じな文字列長のコピーデータを繰り返し、 <textArea/> に対して貼り付けた場合、ペースト後のテキストカーソル位置がおかしくなる場合があります。
ペースト後は通常カーソル位置は貼り付けデータの末尾に移動すべきですが、この問題が発生した場合、カーソル位置は貼り付けデータの末尾ではなく先頭になる場合があります。
|
修正 内容 |
データの貼り付け後にテキストカーソル位置が必ず貼り付けデータの末尾に移動するように修正
|
| 10681 |
IME による入力を行っている場合に、左カーソルキーを繰り返し押し、テキストカーソル位置を移動させると、テキストカーソルの表示が消える場合がある
|
| 環境 |
| OS | : | 全て |
| ブラウザ | : | 全て |
| JVM | : | 全て |
| Nexaweb Platform | : | 全て |
|
| 対象 |
全ての文字入力可能 UI コンポーネント
|
事象 内容 |
IME を使用して文字列を入力した際にテキストフィールドの幅よりも IME による入力文字列が長くなった場合に自動スクロールが起こります。
この自動スクロールが起こった後に IME による入力を確定し、確定後の文字列上をカーソルキーを使用して左に移動させた場合、テキストカーソルの表示が消える場合があります。
|
修正 内容 |
自動スクロールが起こった場合の表示位置を計算するロジックを修正し、テキストカーソルが消えないように修正
|
| 10682 |
WebSphere 上で Nexaweb を使用しており、サーバーが相当な高負荷状態になった場合、ServerProtocolExceptionが発生する場合がある
|
| 環境 |
| OS | : | 全て |
| ブラウザ | : | 全て |
| JVM | : | 全て |
| Nexaweb Platform | : | 全て |
|
| 対象 |
WebSphrer を使用しており、サーバーが相当な高負荷状態になった場合のサーバー処理
|
事象 内容 |
WebSphrer を使用しており、サーバーが相当な高負荷状態になった場合のリクエスト受付処理で ArrayIndexOutOfBoundsException が発生する場合がある
|
修正 内容 |
この問題は、 Nexaweb 内部で使用している SimpleDateFormat のインスタンスがスレッドセーフでなかったこと発生していました。
この問題を修正するために内部的に SimpleDateFormat インスタンスを使用する際に同期処理を行うように変更しました。
|