public class MessageFormatCacheMapFactory extends Object
StrutsのMessageResourcesは、キャッシュからgetしたMessageFormatを同期化せずに複数スレッドでアクセス可能にしている。
このバグを回避するための拡張HashMapを生成する。
参考)
少なくともSun JDKの実装を使用している限りは、日付時刻系のサブフォーマット({0,date}等)を使用しない限り、
MessageFormatの仕様には反するものの、同一インスタンスのformatメソッドを複数スレッドで同時に実行しても、
全く問題ない。(これが、StrutsのMessageResourcesのバグSTR-2172がWon't Fixとなり、修正されなかった理由。)
このクラスではバグの回避方法を調整可能としている。system.propertiesに以下の設定を行う。
コンストラクタと説明 |
---|
MessageFormatCacheMapFactory() |
修飾子とタイプ | メソッドと説明 |
---|---|
static HashMap<String,MessageFormat> |
getInstance()
Strutsのバグ(STR-2172)回避用HashMapインスタンスを返す。
|
public static HashMap<String,MessageFormat> getInstance()
設定により、バグ回避が無効化されている場合は、nullを返す。
Copyright © 2015. All Rights Reserved.