Teeda for Portlet

デフォルトの StateManager で、ポートレットのときはどう保存するのがいいか考える。

  • viewId+namespace にして、保存
  • viewId+namespace にして、WeakMap を使って保存
  • viewId+namespace にして、SoftReference とか使って何とかする
  • viewId+namespace にして、LruMap みたいなものを使って保存
  • stateをリストアするときに clientId を消す
  • セッションに保存

などを検討してみる。1番目のはメモリを食いつぶすだろうし、2、3番目のはいろいろとやらないと、いけなそうだし。4番目のも、長い間使っていない古いものを消すと言うより、使ってないものを消して欲しい。5番目のもこのためだけに、そこいらをいじると良くないと思うし、予期しない問題が起こる気がする。という感じで、検討した結果、ポートレットのときは単純にセッションに保存を採用した。

Teeda for Portlet

TEEDA-184 でTeedaStateManagerImplをどうするかを考えているが、viewId+namespaceにして、serializedViewsに置いておけばいいかとも思ったが、ユーザーがポートレットを追加・削除をひたすら繰り返すと、メモリを食いつぶす気がしてきた・・・。やっぱり、ポートレットのときは、セッション行きかな・・・。でもな・・・。

追記:試しに、serializedViewsをWeakHashMapにしてみたら、すぐにごっそり消してくれるのね・・・。こんなにさっくり消してくれると、使う意味なし・・・。