やっとこ、リリースしてました。主な変更は戻るボタンからの遷移とs:linkのエンコード問題の修正です。気になっていたところは一通り修正したので、rc* をとりました。どうぞ、ご利用ください。
カテゴリー: Seasar
HOTdeployとEnumとBeanUtils
ここのところ、Enumを使うと、PermGenを使いきる問題に悩まされていたのだけど、やっとこ一段落。状況としては、ActionかActionFormとかにEnumを拡張したクラスでプロパティを値をセットして持たせておいて、それをJSPで bean:write とかでそのプロパティを参照しようとすると、commons の BeanUtils の BeanUtilsBean でその情報をキャッシュしていってくれる。っで、このとき、Mapにキャッシュする際にクラスローダーがキーとしてセットされる。WeakHashMapだから、普通は、HotdeployClassLoader とかでも消えてくれるのだけど、Enumのプロパティだと、こいつ自身が消滅しないせいか(staticだから?)、そのクラスローダーも消滅せず、GCされないでクラス情報が残り、PermGenが消費されていくみたい。c:bean 以外にもこの現象が起きるのがあるのかもしれないけど、HOTdeployとEnumとBeanUtilsのあわせ技には注意しようっと。
SAStruts for Portlet
戻るボタンで戻ったページからページ遷移ができなかったのと、s:link とかでパスに日本語とか渡して受け取るときにURLデコードするようにしました。これで、気になっていたものは一通り直したから、N2 Portal/N2 Collabo 上でテストして問題がなかったら、sastruts-portlet をリリースしておこ(バージョンのrcは取って、1.0.0にします)。
Teedaのときは JSF がポートレットの仕様をサポートしてるから、それを考慮しつつ対応したのだけど、SAStruts の場合はサーブレットオンリーの世界だから、ポートレットの世界上にサーブレット環境を作り上げた感じで、結構、がんばっていると思う。そういう意味では、サーブレットのラップ技術を磨いたかも 🙂 Apache Portals にも Struts ブリッジがあるけど、あれって、ポータル固有のAPIを呼ぶような依存コードを(既に対応してなければ)別途つらなきゃならないけど、SAStrutsのポートレットの場合はそんなものは不要で、ポータルはJSR 168に対応していれば良い。
という感じで、なかなか良いできかと思うので、使ってみてくださいませ。