ポートレット

<ポートレット>VFSポートレットも一通り動くようになったと思う。設計的な問題としては、PortletConfigから取得する値をどのように管理するのがよいかということ。現在は、仕方がないので、JSFのアプリケーションスコープでビーンを作り、そこで、毎回、PortletConfigのgetInitParameterを呼んで、値を返すようにしている。うーん、ここは、ポートレットのインスタンスごとに管理して、いちいち、呼びにいかないようにしたいところ・・・。どうするのがよいのかね・・・。まぁ、その辺は後で考えることにして、今週の後半で新規ファイルの作成、新規フォルダの作成、そして、削除を何とかしたいところだな。そんで、できれば、Jetplume の CVS にコミットをしたいな。J2 用の MyFaces は、Apache に返すべきか、返すとしたら、どのように返すべきかを考え中・・・。結構、使えると思うから、Apache に入れるのが良い気がしているのだが・・・。

<Jetspeed>Yahooのメーリングリストにて、Postgres でも動くとの情報が得られた。いつも、MySQL で実行しているので、設定を変えて試すのが面倒だな~と思っていたので、大変助かりました♪あとは、近頃のデータベースまわりでの変更を把握していないので、もう少し見ておかないとなぁ、と思う今日この頃。

Jetspeed

<Jetspeed>ここのところは、DLSとAteがメインで、テストの修正から始まり、データベースをいじったりしているな・・・。ちょっと別件で忙しいので、今のところ、静観中・・・。落ち着いたとところで、試してみよう。もしかしたら、ようやくPostgresでも正しく動くようになったかな(今まで試したことなかったけど)。

近頃、marevol.com へのドキュメント作業も進んでいない。とりあえず、VFSポートレットが落ち着かんことには・・・。予定では、この前の週末には完了しているはずだったのだが、MyFacesGenericPortletの改良に時間がかかってしまっている・・・。一応、毎週土曜日はドキュメント作業の日と考えているので、今度の土曜日にはできるようにしたいところ・・・。

<MyFaces>セッション問題を考える。確認したところ、MyFaces は、ビーンをPORTLET_SCOPEに置いているようだ。一応、ビーン内でPortletRequestからPortletSessionを取り出して、APPLICATION_SCOPEとPORTLET_SCOPEに格納されているデータを確認すると、同じポートレットを別ページに配置していれば、別のPORTLET_SCOPEでセッションに入れることを確認できた。また、Plutoを確認して、PORTLET_SCOPEはAPPLICATION_SCOPEでjavax.portlet.p.WINDOW_ID?KEYという形で格納されていることも確認。うーん、何がおかしいのだろうか。MyFaces、Pluto、Jetspeed2、そして、マイプログラム・・・。でも、マイプログラムではたいしたことやっていないしな・・・。

調べてみて、マイプログラム内であることに気づく。JSF でビーンをapplicationスコープで作っている。そのビーンでPortletConfigから値を取って、そのポートレットで使うデフォルト値を管理するようにしている。そんで、そのapplicationスコープのビーンから、デフォルト値をsessionスコープのビーンに渡している。つまり、applicationスコープのビーンは、そのポートレットインスタンスに関係なく、そのポートレットで共有して使われる。正しいといえば、正しいけど、この辺が単純に1つのアプリケーションとして作るのとは違って、ややこしい。たぶん、原因はマイプログラムか・・・。これは、ポートレットとして利用するときのはまりどころになりそうな・・・。1つレベルアップ 🙂

MyFaces

<MyFaces>ようやく、VFSポートレットも基本機能が終わり、細かいところを実装していくか~、と思ったら、問題発生。どうも、ポートレット上でのMyFacesのセッション管理がおかしい。セッションが、PORTLET_SCOPEでなく、APPLICATION_SCOPEで管理されているように思う。つまり、1つのポートレットアプリケーション上で、複数のポートレットを配備しようとすると、そのアプリケーション内で、共有されているような・・・。これって、結構、致命的な問題の気がするのだが・・・。うーん、まずは、MyFacesのコードを確認するしかないな・・・。この状況だと、MyFacesもビルドする環境が必要そうだな。

早速、ちらっと、MyFaces のコードを見ると、一応、PORTLET_SCOPE で管理する雰囲気がある。あら?なぜ、うまく動いていないのだろう??うーん、もっと細かく見ないとわからん。