public abstract class RebuildableExternalContextMap extends AbstractExternalContextMap
外部コンテキスト用の抽象Mapです。
HOT deploy中はリクエストごとにクラスが変わってしまうので、 セッションなどに入れたデータを別のリクエストで取り出すと
ClassCastExceptionが起きます。 これを防ぐために最新のクラスで元のオブジェクトを再作成します。
HOT deployは単一スレッドで実行されることが前提なので、このクラスはスレッドセーフではありません。
HotdeployUtil.rebuildValue(Object)AbstractExternalContextMap.ImmutableEntryAbstractMap.SimpleEntry<K,V>, AbstractMap.SimpleImmutableEntry<K,V>| 修飾子とタイプ | フィールドと説明 |
|---|---|
protected static WeakReference |
hotdeployClassLoader
|
protected static Set |
rebuiltNames
hotdeployClassLoaderの元で再構築したコンポーネント名のSet |
| コンストラクタと説明 |
|---|
RebuildableExternalContextMap() |
| 修飾子とタイプ | メソッドと説明 |
|---|---|
Object |
get(Object key) |
protected boolean |
isHotdeployMode()
HOT deployモードの場合は
trueを返します。 |
Object |
put(Object key,
Object value) |
void |
putAll(Map map) |
clear, containsKey, containsValue, entrySet, getAttribute, getAttributeNames, isEmpty, keySet, remove, removeAttribute, setAttribute, valuescompute, computeIfAbsent, computeIfPresent, forEach, getOrDefault, merge, putIfAbsent, remove, replace, replace, replaceAllprotected static WeakReference hotdeployClassLoader
protected static Set rebuiltNames
hotdeployClassLoaderの元で再構築したコンポーネント名のSetpublic Object put(Object key, Object value)
put インタフェース内 Mapput クラス内 AbstractExternalContextMappublic void putAll(Map map)
putAll インタフェース内 MapputAll クラス内 AbstractExternalContextMapprotected boolean isHotdeployMode()
trueを返します。
HOT deployモードの場合で、HotdeployClassLoaderが前回のチェック以降に切り替わっていた場合は
保持しているリビルド済みオブジェクトの名前をクリアします。
trueCopyright © 2015 The DBFlute Project. All rights reserved.