Oct 26, 2005
JSR 168 Portlet Specification ダイジェスト
Portlet Specification をざっと眺めたときのメモ。
JSR 168 Portlet Specification
オリジナルの入手はこちら → JSR 168
PLT.1 Preface
JSR 168 に関連する仕様は、
- Java 2 Platform, Enterprise Edigion, v1.3
- Java Servlet, v2.3
- JavaServer Pages, v1.2
PLT.2 Overview
- Portal とは
- 情報システムのプレゼンテーション層に相当する機能で、一般的に personalization、single sign on、content aggregation などを提供する Web アプリケーションのこと。
- Portlet とは
- Java を利用して構築された Web Component。Portal から呼び出され、リクエストに応じて動的に画面生成を行う。Portlet Container に管理される。
- Portlet Container とは
- Portlet を管理し、Portlet の実行環境を提供するコンテナ。Portlet のライフサイクル管理、永続情報管理を行う。
PLT.3 Relationship with the Servlet Specification
Servlet と Portlet の違い。
- Portlet は画面の一部のみを生成する。
- Portlet は URL と直接的な関連を持たない
- Web ブラウザは直接 Portlet を呼び出すことはできない。(必ず Portal 経由)
- Portlet は Servlet よりリクエストハンドリングなどに関して細かく定義されている
- Portlet の状態を表す Portlet Mode や Window State などが予め定義されている
- Portlet は Potal ページ内に複数存在することができる
- Portlet 毎の設定情報、ユーザ毎の設定情報にアクセスできる
- ユーザプロファイル情報にアクセスできる
- HTML 内のリンクを Portal に適した形に書き換えることができる
- Portlet Session にアクセスできる。スコープには application-wide, portlet private が選択できる。
- レスポンスの文字エンコーディングを指定できない
- レスポンスの HTTP ヘッダを変更できない
- リクエストの URL を参照できない
- Portlet は Servlet や JSP を呼び出すことができる。
- Portlet Container は Servlet Container の拡張。
PLT.4 Concepts
Web ブラウザが Portal にアクセスすると、Portal は Portlet Container を呼び出す。 Portlet Container は、内部で管理している Portlet を呼び出す(必要な場合は複数の Portlet を呼び出す)。
┏━━┓ ┏━━┓ ┏━━━━━━━━━━┓ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃┌────────┐┃ ┃ ┃ ┃ ┃→┃│Portlet1│┃ ┃ ┃ ┃ ┃ ┃└────────┘┃ ┃ ┃ ┃ ┃ ┃┌────────┐┃ ┃ ┃→┃ ┃→┃│Portlet2│┃ ┃ ┃ ┃ ┃ ┃└────────┘┃ ┃ ┃ ┃ ┃ ┃┌────────┐┃ ┃ ┃ ┃ ┃→┃│Portlet3│┃ ┃ ┃ ┃ ┃ ┃└────────┘┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗━━┛ ┗━━┛ ┗━━━━━━━━━━┛ Brower Portal Portlet Container ↓ 生成された画面は・・・ ┏━━━━━━━━━━┓ ┃┌────────┐┃ ┃│Title │┃ ┃├────────┤┃ ┃│ 1│┃ ┃│Content │┃ ┃│ │┃ ┃└────────┘┃ ┃┌───┐┌───┐┃ ┃├───┤├───┤┃ ┃│ 2││ 3│┃ ┃└───┘└───┘┃ ┗━━━━━━━━━━┛Portlet はそれぞれ画面の一部分となる HTML を返すので、Web ブラウザには複数の子ウィンドウが開いたような画面が表示される。
PLT.5 The Portlet Interface
┌─────────────┐ │<<interface>>│ │ Portlet │ ├─────────────┤ ├─────────────┤ └─────────────┘ △ | ┌──────────────┐ │ <<abstract>> │ │GenericPortlet│ ├──────────────┤ ← Portlet はこのクラスを継承する。 ├──────────────┤ └──────────────┘
- Portlet のインスタンスは VM 毎に1つずつ(なので、分散環境でない場合は1つ)
- Portlet のライフサイクルは Porlet#init → Porlet#processAction → Porlet#render → Porlet#destroy
- Portlet Container は Servlet Container が Portlet アプリケーションの実行時に利用している ClassLoader と同一の ClassLoader を利用して Portlet をロードしなければならない
- Portlet 実行時(Portlet#processAction) には PortletException, PortletSecurityException, UnavailableException が throw される可能性がある
- PorletException・・・Porlet 実行中に何らかのエラーが発生した場合
- PorletSecurityException・・・ユーザが Porlet の利用権限を持っていない場合
- UnavailableException・・・Portlet が一時的もしくは永続的に利用不可能な場合
- Portlet に渡されるリクエスト/レスポンスのインスタンスは Thread Safe ではない。
PLT.6 Portlet Config
- Portlet Deployment Descriptor には title, short-title, keywords などの情報を記述できる
- PortletConfig のインスタンスが Portlet Deployment Descriptor の情報を保持している
PLT.7 Portlet URLs
- Portlet に指示を行うために、Portlet へのコマンドを含んだ URL を使用する。この URL を Porlet URL と呼ぶ。
- Portlet URL を表す PortletURL インターフェースが定義されている。PortletURL#createActionURL, PorletURL#createRenderURL を使用して PortletURL のオブジェクトを生成できる。
- 特定の Portlet Container 実装が内部情報を URL のクエリに含めている可能性があるので、Porlet を開発する際には HTTP の GET メソッドを使用した Form を利用すべきではない。
- Porlet 毎の情報を PorletURL#setParameter を利用することで Portlet URL 内に組み込むことができる。
- PortletURL#setSecure を使用することで、Portlet URL の転送時に SSL を使用しなければならないか否かを指定することができる。
PLT.8 Portlet Modes
- Portlet Mode は Portlet が現在実行中の機能を表す。
- 標準で定義されている Portlet Mode は、VIEW、EDIT、HELP。
- VIEW・・・Portlet の現在状態を表示するモード。GenericPortlet#doView が対応する。
- EDIT・・・Portlet の状態を変更する方法を提供するモード。GenericPortlet#doEdit が対応する。
- HELP・・・Portlet に関するヘルプ情報を表示するモード。GenericPortlet#doHelp が対応する。
- Deployment Descriptor の custom-portlet-mode を使用することでカスタムの Portlet Mode を定義できる。
PLT.9 Window States
- Window State はレンダリングの際に Portlet がどの程度の情報を出力するかを表す。
- 標準で定義されている Window State は、NORMAL、MAXIMIZED、MINIMIZED。
- NORMAL・・・Portlet が他の Porlet とページをシェアしている状態を表す。
- MAXIMIZED・・・Portlet がページ内のスペースを占有できる状態を表す。
- MINIMIZED・・・Portlet は最小限の情報しか出力できない状態を表す。
- Deployment Descriptor の custom-window-state を使用することでカスタムの Window State を定義できる。
PLT.10 Portlet Context
- PortletContext のインスタンスは Portlet Application 毎に一つ(正確には VM 単位で)。
- PortletContext は、初期化パラメータ、アトリビュート、リソースなどを管理する。
- Portlet は PortletContext から RequestDispatcher を取得することで、Servlet や JSP を呼び出すことができる。
- Portlet は ServletContext にもアクセスできる。この ServletContext は PortletContext と同一のデータを保持している。
PLT.11 Portlet Requests
PLT.12 Portlet Responses
PLT.13 Portal Context
PLT.14 Portlet Preferences
PLT.15 Sessions
PLT.16 Dispatching Requests to Servlets and JSPs
PLT.17 User Information
PLT.18 Caching
PLT.19 Portlet Applications
PLT.20 Security
PLT.21 Packaging and Deployment Descriptor
PLT.22 Portlet Tag Library
PLT.23 Technology Conpatibility Kit Requirements
TrackBack ping me at
http://www.in-vitro.jp/blog/index.cgi/JSR/20051026_01.trackback
writeback message: Ready to post a comment.
