EZServletによるサーブレットの初期化時にプロパティファイルを読み込みますが、J2SDK1.4.1_02及び、その付近のバージョン、それらのバージョンをベースとするサードベンダーの提供するJVM上で稼動する場合で、かつ、プロパティファイルの文字コードセットと環境デフォルトの文字コードセットが異なる場合に、プロパティファイルに特定の文字列が含まれていると、プロパティファイルのロードに失敗することがあります。これはJVMのテキストファイル読み込みロジックの不具合に起因するもので、EZServletのバグではありません。
弊社では以下の環境について、不具合を確認しました。
いずれも、Linux環境にてSJISの"解除"(89 f0 8f 9c)という文字列を含むファイルをLANG=ja_JP.eucJPである状態で読み込むテストを行いました。
| ベンダー |
製品 |
| Sun Microsystems |
J2SDK1.4.1_02 |
| BEA Systems |
JRockit 8.1sp2, JRockit 8.1sp2rp1 |
これらの環境の組み合わせを使用するつまり、上記のJVMをデフォルトエンコーディングが"EUCJIS"である環境で稼動させ"SJIS"のプロパティファイルを使用する場合は、EZServlet 2001.1.17以降を使用し、javaコマンドラインオプションにより
-DCoolProperties.EncodingType=Shift_JIS
のように、CoolPropertiesの読み込み時のデフォルトエンコーディングタイプを指定することで、問題を回避できます。
また、以下の環境については、全く同じデータでも、特に対処することなく問題が発生しないことを確認しました。
| ベンダー |
製品 |
| Sun Microsystems |
J2SDK1.4.1_06, J2SDK1.4.2_02 |