ポートレットは,Servlet APIのリクエストディスパッチで呼び出されます。また,ポートレットは,uCosminexus Portal Framework上で動作するほかのポートレットと,次のオブジェクトを共有します。
ユーザが初めてポータルのウェルカム画面にアクセスしたときのポートレット呼び出しシーケンスを次の図に示します。
図2-2 ポートレット呼び出しシーケンス
日立APIポートレットの開発では,通常のWebアプリケーションの開発に加えて,次の点に注意してください。
(1) セッション管理
セッション管理はuCosminexus Portal Frameworkが実施します。ポートレットではServlet APIのセッション管理機能をそのまま利用できます。ただし,HttpSessionはuCosminexus Portal Frameworkおよびポートレットで共有するので,ポートレット内でセッションが必要ない場合でも,HttpSession#invalidateでセッションを無効にしないでください。
(2) HTTPヘッダ操作
ポートレット内でのHTTPレスポンスヘッダおよびレスポンスコードの操作はできません。Servlet APIでのCookie設定,HTTPリダイレクトなどの操作は無効となります。
また,HTTPレスポンスヘッダが登録できる場合は,Cookieの情報はまとめて登録されます。ただし,次のような場合に,同一名称のCookieを登録しようとしたときは,エラーメッセージが出力され,ポートレットのCookie設定が無効となります。
(3) アトリビュート操作
HttpSessionおよびServletContextはすべてのポートレットで共有するため,アトリビュート名には,PortletUtils#getNamespaceで取得したプレフィックスを付けます。予約語のため,プレフィックスとして次の用語は使用できません。
アトリビュート操作の例については,「付録A.3 アトリビュート操作」を参照してください。
(4) リクエストディスパッチ
リクエストディスパッチには,RequestDispatcher#includeおよびRequestDispatcher#forwardを使用します。ただし,forwardを使用する場合,RequestDispatcherはServletRequestから取得してください。
(5) 複数ログイン対応
uCosminexus Portal Frameworkでは同一ユーザの複数ログインが制限されていません。同一ユーザが複数ログインした場合,それぞれに対してHttpSessionが割り当てられます。ユーザセッション管理をHttpSessionで実現する場合には,必要に応じて一貫性制御をする必要があります。
(6) ポートレットの呼び出し順序
ポートレットの呼び出し順序に依存したポートレット開発はできません。