2.2.1 ポートレットの呼び出し

ポートレットは,Servlet APIのリクエストディスパッチで呼び出されます。また,ポートレットは,uCosminexus Portal Framework上で動作するほかのポートレットと,次のオブジェクトを共有します。

ユーザが初めてポータルのウェルカム画面にアクセスしたときのポートレット呼び出しシーケンスを次の図に示します。

図2-2 ポートレット呼び出しシーケンス

[図データ]

日立APIポートレットの開発では,通常のWebアプリケーションの開発に加えて,次の点に注意してください。

<この項の構成>
(1) セッション管理
(2) HTTPヘッダ操作
(3) アトリビュート操作
(4) リクエストディスパッチ
(5) 複数ログイン対応
(6) ポートレットの呼び出し順序

(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) ポートレットの呼び出し順序

ポートレットの呼び出し順序に依存したポートレット開発はできません。