PortalFilter

いや~、はまっている。adminで初めてログインしたときにパスワードを変更するところではまっている。中身について説明すると、PasswordCredentialValveImpl#invokeでパスワードの有効期限が切れていたりすると、プロファイルでsecurityに定義された流れでPSMLを探す。つまり、PasswordCredentialValveImplで表示するページをコントロールしている。adminで初めてログインするときには、PasswordCredential#isUpdateRequiredがtrueになっているため、ページが飛ばされる。っで、my-account.psmlが表示され、パスワード変更ポートレットが表示される。次に、新しいパスワードを入力し、送信すると、ChangePasswordPortletのprocessActionで新しいSubjectを生成して、JetspeedRequestContextのセッション(つまり、ポートレットのセッションではなく、J2のセッション)に入れる。で、このセッションで問題が発生している!PortalFilterをかませたときだけ、どうやら、新規にセッションが作られているみたいだ。そういわけで、謎のセッションに新しいSubjectを入れて、結局、PortalFilterでセッションから古いSubjectを再度取得して、isUpdateRequiredがtrueのままなので、再び、my-account.psmlを表示する。まずは、なぜ、PortalFilterをかませたときだけ、謎のセッションが来るのかを突き止める必要がある。現在の予想では、ラップしているところに問題があるような気もしている。コード内では、getRequest()でラップしたやつをとったりする場合がいくつかあるし。というわけで、調査中。結構、ややこしいので、調べるのに時間がかかっているな・・・。

ビルド時間

近頃、ビルドする時間が増えたな、っと思い考えてみると、そういえば、64bit Java5に変えてからのような気が。で、32bitと比べてみると、やはり、ビルドに時間がかかる。64bitのやつはデフォルトがサーバーモードだから、それが原因かね。ちゅうことは、Mavenでビルドに時間がかかるようなものをビルドするときには、クライアントモードのJavaを使えということかね。

ログインフォームをテンプレートへ・・・

今日は、ログインフォームをテンプレートに載っけるためにいくつか修正をする。現状では、変なパスワードを入れれば、エラーが出るようにできた。あとは、adminで初めてログインしたときに出るパスワード変更ポートレットの完了後のページ遷移について調べる。現状では、adminでログインしたときにmy-account.psmlのままになり、一度ログアウトしないと使えない。これでは、不便なので、何とかしたいところ・・・。で、みていくと、どうも、PasswordCredentialValveImplでとばしているようだな・・・。この動作を考慮して、やれば、OKなのかも。というわけで、まだ、調査が必要。