Teeda for Portlet

昨日はセッション問題をいろいろと考えた。あーでもない、こーでもないと、様々な案を出して、たどり着いたのが、ServletとPortletを共存させるようなS2コンテナ用のExternalContextの作成。今日の朝は、SharedExternalContext(仮)を作って、試してみたら、結構、良い感じで動いているように思う(思わぬ、穴があったりするかもしれんが)。SharedExternalContextはHttpServletExternalContextとPortletExternalContextのインスタンスを持つ。これを追加するにあたり、これを使うようなS2のListenerとかも追加する必要がある。そんなわけで、既存のものは特に変更することなしに、追加という形を取った。理由は、実行するに当たり、Portlet API を必要とするので、サーブレットしか興味がなければ、使う必要がないため。というわけで、サーブレットとポートレットを共存させたいときにはこれを使えばいいかね。これらは、S2Containerに追加するとして、Teedaの方は、TeedaConfigurationListenerのそれを使うやつを追加する必要があるくらいかね。SharedExternalContextの名前もいまいちなので、ExtendedExternalContextとして、ポートレットのところに追加しておこうかな。今日の夜あたりにでも、名前変えたら、コミットしておこ。

Teeda for Portlet

昨日は、セッションビーン問題をSingletonS2ContainerFactory.destroyをして、対応したけど、これって、良くないな・・・。Teeda 以外でもそうだけど、S2 でS2Container をSingletonS2ContainerFactoryを使うこと自体がよろしくない気がしてきた。これ使うと、同じコンテキスト内にサーブレットとポートレットの共存が難しいし、同じコンテキスト内で複数のポートレットがあって、portlet.xml にconfigPathを記述して、それぞれのポートレットで別のS2コンテナを使いたいときにだめだ・・・。対応するとしたら、ポートレットのインスタンスにS2コンテナを持たせておいて、それを渡す、と言った感じだろうか。これをすると、Teedaの方もポートレットのときは、そっからとってくるように変更する必要があるな。