SAStrutsポートレット 1.0.0-rc4

リリースしました。主な変更点は、

  • Liferay と JBoss Portal のサポート
  • 保持する過去ページのキャッシュの数を 10 から 5 に変更

基本的に JSR 168 のポートレットでの動作をサポートしますが、今後は Jetspeed2、PALポータル、Liferay をメインに動作を確認しようと思います(JBoss Portal は優先度を下げます)。rc も 4 になったし、他のポータルでも動くから、ぼちぼち 1.0.0 にしようかと思ってます。というわけで、ぜひ、ご利用くださいませ。
http://sastruts.seasar.org/portlet.html

SAStruts なポートレットを Liferay と JBoss Portal で試す

Jetspeed2/PALポータルでは、メインで使っているので、SAStruts なポートレットも動くのは確実なのですけど、Liferayとかであまり試していなかったので、動かしてみました。使ったのは、Liferay 5.1.2 と JBoss Portal 2.7.0 です。

で、まず、Liferayから試したけど、普通にうごきませんね・・・。PAL の英語の ML でも動かんと突っ込まれていたけど、ほんとに動いてないみたい。確認してみると、ActionServlet が見つからんと怒られる。原因は、Liferay が配備後に、web.xml に com.liferay.portal.kernel.servlet.PortletContextListener をリスナーとして追加するのだけど、こいつが org.seasar.struts.portlet.servlet.ActionServlet より先に実行して、ポートレットを初期化するもんだから、ActionServlet が存在しないときにアクセスされて、ActionServlet がないと言われる。というわけで、これについては、ポートレットが init() で ActionServlet にアクセスするのをやめて、render() とかで必要に応じてアクセスするように SAStruts ポートレットを変更した。

あと、うちの社内テストで Liferay にポートレットを配備したときに、何かをサブミットすると動きませんみたいなことも言われていて、試したら、確かにサブミットで文句を言う。これも確認したら、サブミットした後の render あたりの処理で INCLUDE でポートレット内のサーブレットにアクセスするもんだから、PortletRequestFilter が処理してしまって、NPE になっていた。これは SAStruts ポートレットの processAction() と render() の処理時に処理中フラグを立てているのだけど、処理後に削除することで無事に解決。

次に JBoss Portal で試したら、上の問題も修正されていることもあってか、普通に動いていた。良かった。でも、SAStruts とは関係ないけど、JBoss Portal って、何か、前から進歩がないというか、使いにくいというか・・・。ポートレットのインスタンスを作るときに ID にスペースをいれたら、Exception が出て何ともできなくなり、再インストール・・・(結構、致命的な問題な気もするのだけど、これでいいものなのかね)。そんな感じで、個人的な印象は悪くなった。こんな感じのレベルだと、PAL や SAStruts ポートレットのサポート優先度は下げるべきかなっと。

SAStrutsポートレットについては、修正をコミットしたので、もうちょっとテストしたら、1.0.0-rc4 をリリースしておきます。

SAStrutsベースのポートレット開発

OSC で使った Flash デモを再編集しました。公開するまでに時間がかかったのですが、OSC で使ったやつがVMWare上で作っていたのですけど、先週、そのイメージが壊れてデータを失い、ゼロから作りなおしてました・・・。という感じで作りなおして、コメントなども入れておきました。興味がありましたら、どうそ(Flashが表示されるまでがちょっと重いかも)。

http://labs.n2sm.co.jp/?p=108