SAStruts なポートレットでは、HttpServletRequest の getHeaderNames() で null を返していたのだけど、これだと、externalbinding するときに S2 の ServletRequestHeaderMap でヌルポになってしまう。getHeaderNames() って null を返しちゃいけないのかなっと思って javadoc を見たら、このメソッドにアクセスできないときは null を返してもいいみたい。まぁ、たぶん、ほとんどすべてのサーブレットコンテナはnullを返すことはないのだろうね。というわけで、SAStrutsなポートレットしては、空のEnumerationを返すことにしよう。
カテゴリー: Seasar
LiferayでSAStrutsなポートレットをHOT deploy
PALポータルでいつも普通に HOT deploy で作っているけど、Liferay でも同様にやってみる。Tomcat 5.5 で試してみると、以下のような手順が良いかと思う。
- Liferay を起動して、一度、HOT deploy したいポートレットの war ファイルを配備する
- 配備後の WEB-INF/web.xml を開発環境の src/main/webapp/WEB-INF/web.xml にコピー
- 配備後の WEB-INF/tld を開発環境の src/main/webapp/WEB-INF/tld にコピー
- 配備後の WEB-INF/lib/util-*.jar を開発環境の src/main/webapp/WEB-INF/lib にコピー
- 配備してあるポートレットを削除(Liferay の webapps/hogeportlet* みたいな感じのを削除)
- Eclipse なら Tomcat プラグインとかでコンテキストの更新して配備(conf/Catalina/localhost/hogeportlet.xml を作るみたいな)
- あとは、Liferay の Tomcat を catalina.sh jpda start みたいな感じでデバッグできるように起動(または Tomcat プラグインから Liferay の Tomcat を起動するとか)
という感じで、web.xml、tld、util-*.jar のあたりがポイントかね。たぶん、これで良いかと。
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