![]() ![]() ![]() ![]() ![]() ![]() | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
第11章
この章では、ポートレットの基本的なコンセプトを紹介し、exteNd Directorでどのようにポートレットを実装するかについて説明します。 この章には、次のトピックが含まれています。
「ポートレット」とは、Webクライアントからの要求を処理し、ポータルページ上に動的なコンテンツを作成する特殊なJavaクラスです。 ポートレットはJava Portlet 1.0仕様で定義されています。
ポートレットは、ポータルアプリケーション用のプレゼンテーション層を提供する、プラグ可能なユーザインターフェース要素と考えることができます。 ユーザは、管理者や他のユーザが指定した初期設定に応じて、ポートレットのコンテンツと概観を独自に作成することができます。
exteNd Directorでは、次の方法でポートレットを実行します。
1つあるいは複数のポートレットをポータルページに追加してから、そのページをWebブラウザで次の例のように表示させます。
この例では、exteNd Directorポータルページは [マイブックマーク]と[気象サービス]の2つのポートレットのコンテンツを表示しています。
詳細については、のポータルページの操作に関する章を参照してください。
それぞれのポートレットをWebブラウザ内で直接実行します。 ブラウザ内で起動する[気象サービス]ポートレットの例を次に示します。
ポートレットとサーブレットの関係で説明されているとおり、ポートレットの大部分はサーブレットテクノロジによって実現されています。 たとえば、ポートレットとサーブレットはどちらもコンテナオブジェクトで管理され、要求/応答パラダイムを使用してWebクライアントと通信します。
ポートレットがこのパラダイムでどのように機能するのかを大まかに理解するために、Webブラウザ内で動作するポートレットアプリケーションの場合を考えてみることにします。 ポートレットによって作成されたコンテンツをユーザが、おそらくリンクを参照したりボタンをクリックしたりして操作すると、ブラウザはポータルに要求を送信します。 するとポータルは、要求をポートレットコンテナに送ります。ボートレットコンテナは、その要求を該当するポートレットで実行できるように、「アクション要求」または「表示要求」として再パッケージします。 ポートレット要求処理については、ポートレット要求と応答で詳しく説明しています。
exteNd DirectorのJava Portlet 1.0拡張機能で説明されているように、exteNd Directorは、Java Portlet 1.0互換ポートレットの開発と実行をサポートし、さらに拡張機能も提供します。
Java Portlet 1.0仕様は、任意のJava Portlet 1.0互換ポータルで実行可能なポートレットを開発するためのAPI標準セットを定義します。
この章でポートレットの基本的なコンセプトについて説明しますが、次のJava Community WebサイトでJava Portlet 1.0に関する詳しい情報を参照することができます。
http://jcp.org/aboutJava/communityprocess/final/jsr168/index.html
注記: このURLは、この章が発行された時点で有効であったものです。
exteNd Directorは、次の図に示すような階層的なポートレットオブジェクトモデルを実装しています。
ポートレットクラス ポートレットの初期化パラメータとデフォルト動作を定義するJavaクラスです。 ポートレットアプリケーションの各ポートレットクラスは、ポートレットをポートレットコンテナから利用可能にする定義記述子を持つ必要があります。 ポートレットアプリケーション展開記述子に関する節で説明されているように、portlet.xmlのエントリまたは別のポートレットフラグメント展開記述子のいずれかとして、これらの記述子を作成する必要があります。
ポートレット定義 ポートレットクラスのインスタンスです。 たとえば、あるクラスの特徴を全て継承するが、異なる初期化パラメータを使用するように定義したい場合には、1つのポートレットクラスに対して複数のポートレット定義を作成することができます。
ポートレット登録 登録されたポートレット定義です。 1つまたは複数のポートレット定義をポートレットアプリケーションに登録できます。 ポートレット登録は、そのペアレントの定義から設定を継承しますが、exteNd Directorによってこれらのデフォルト値はいずれも登録の際に上書きできます。 このようにして、複数のポートレット定義を1つのポータルページ上に設定することができます。そしてこのページでは、それぞれの登録が独自の動作を表示し、独自のコンテンツを生成します。
ポートレット定義の登録に関する節の説明のとおりに、DAC (Director Administration Console)でポートレット定義を登録します。
ポートレットページインスタンス 特定のポータルページに関連するポートレット登録のインスタンスです。 ポートレットページインスタンスは、そのペアレントのポートレット登録から初期設定と設定を継承します。 これらのデフォルト値はいずれも、ポータルページ管理ツールとポータルパーソナライザツールを使用してポートレット登録をポータルページに割り当てる際に上書きできます。 次の参照先では、ポートレット登録を様々なタイプのポータルページに割り当てる方法を説明しています。
ポートレット登録の割り当て先 |
参照 |
---|---|
コンテナページ |
|
共有ページ |
|
パーソナルページ |
ポートレットオブジェクトモデルの各レベルでの設定の指定についての詳細は、ポートレット初期設定を参照してください。
exteNd Directorが実装するJava Portlet 1.0には、ポートレットの開発や実行をより柔軟に処理するための、次の機能が含まれています。
「ページフロー」と呼ばれる特殊なポートレットを、Javaプログラミング不要で作成できる設計ツール。
pageflowsに関する章を参照してください。
タイトルバー、自動登録、およびXMLを生成するポートレット用のスタイルシートなど、あらゆる初期設定と設定の指定を可能にする、追加のオプションポートレット展開記述子novell-portlet.xml。
ポートレットアプリケーション展開記述子に関する章を参照してください。
設計時に、そしてさらに登録時の展開後、ページ割り当て後、および実行後にポートレットの初期設定と設定を指定したり変更したりする機能。
ポートレット初期設定を参照してください。
XMLコンテンツを生成するポートレットのスタイリングに関する章を参照してください。
編集モードのデフォルト実装に関する章を参照してください。
ポートレットごとに、またはアプリケーションのポートレット全てに対して、非同期対同期処理を指定する機能
同期対非同期処理に関する章を参照してください。
ポートレットフラグメント展開記述子を用いた、ポートレットのダイナミックロード
ポートレットアプリケーション展開記述子に関する章を参照してください。
ポートレットとサーブレットは、機能の特徴の多くが共通していますが、両者は似ていても異なるミッションを持つ、別個のJavaクラスです。 つまり、ポートレットはポータル内で実行するためにアプリケーションロジックをカプセル化し、サーブレットはWebサーバ上で実行するためにアプリケーションロジックをカプセル化します。
javax.Portletはjavax.Servletと似ており、サーブレットから次の機能を活用します。
次の図は、ポートレットとサーブレットを比較するもので、共通する機能およびそれぞれのプロジェクトに特有の機能を強調表示しています。
サーブレットと同様に、ポートレットはコンテナオブジェクトによって管理します。 「ポートレットコンテナ」と呼ばれるように、オブジェクトはポータルとその関連するポートレットとの連絡役を担当します。
Java Portlet 1.0の仕様に従って、ポートレットコンテナは以下の処理を行います。
ポートレットライフサイクルを管理(ポートレットのライフサイクルの説明を参照)。
ポートレットコンテキストを確立(ポートレットコンテキストの説明を参照)。
ポートレット設定用の持続的な保存領域を供給(ポートレット初期設定の説明を参照)。
ポータルからの、特定のポートレットでの実行要求に応答(ポートレット要求と応答の説明を参照)。
ポートレットは、最初に起動してから最後に停止するまで、いくつかの段階を経て進行します。 次の図に示すように、ポートレットのライフサイクルはこれらの段階で形成されています。
exteNd Director内のポートレットコンテナは、展開したポートレットアプリケーションのポートレットのライフサイクルを自動的に管理します。
ポートレットコンテナはポートレットクラスをロードしてから、それらを使用できるようにインスタンス化します。 ポートレットコンテナは、サーブレットコンテナがWebアプリケーションごとにWebアプリケーションリソースをロードするのに使用するのと同じクラスローダを起動して、ポートレットリソースをロードします。
exteNd Director内で、ポートレットアプリケーションを展開するか展開されたアプリケーションを含むサーバを起動すると、ポートレットコンテナがポートレットと他のポートレットリソースのロードを開始します。
初期化の間にポートレットは、データベースやEnterprise JavaBeans(EJBs)への接続などの、集中的な動作を要する一度だけのアクティビティーを実行することがあります。
ポートレットコンテナは、次の設定データに基づいてポートレットオブジェクトを初期化します。
exteNd Directorは、次のようなポートレット展開記述子を提供します。
さらに詳しい内容については、ポートレットアプリケーション展開記述子に関する節を参照してください。
ポートレットが初期化されると、ポートレットコンテナはポートレットを呼び出して、ポートレットURLで発生したクライアント要求を処理できます(ポートレットURLの説明を参照)。 これらのURLで、特定のポートレットがアクション要求に応答したり、クライアントからの要求を表示するように指定します。
ポートレットは状態を変更することによってアクション要求に応答し、コンテンツを生成することによって表示要求に応答します(ポートレット要求と応答の説明を参照)。 ポートレットは、ポータルページ上のポートレットコンテナによって作成されたポートレットウィンドウの中にコンテンツを表示します(ポートレットの表示方法の説明を参照)。
ポートレットコンテナは、たとえば、リソースの節約やシャットダウン前の整理処理の一部として、ポートレットをサービスから開放する時期を決定します。
ポートレットコンテナがポートレットを無効にすると、ポートレットはリソースを開放し、持続的な状態情報を保存します。
実行時にポータルページが要求されると、exteNd Directorポータルアグリゲータはそのページに割り当てられた全てのポートレットのコンテンツを集約します。 ポートレットを表示するために、ポータルアグリゲータはポートレットコンテナに要求を送信し、各ポートレットが生成したコンテンツを表示できるようにページ上に表示領域を割り当てます。 この領域はポートレットウィンドウと呼ばれるもので、次の節で説明します。
「ポートレットウィンドウ」とは、ポートレットが生成したコンテンツからなるポータルページ上の領域で、ポータルによって装飾やコントロールが追加されています。 各ポートレットウィンドウは、設定オブジェクトに関連するポートレットクラスで構成されています。 初期設定オブジェクトによって、ポートレット展開記述子に指定された初期設定値と設定値にアクセスすることができます。
詳細については、ポートレット初期設定およびポートレットアプリケーション展開記述子に関する節を参照してください。
ポータルは次の例のように、ポータルページと呼ばれる1つに完結したドキュメントにポートレットウィンドウを集約します。
単一のポータルページに、参照するポートレット定義が同じでも、表示するポートレットの登録インスタンス(ページの割り当て時に、それぞれ独自の初期設定と設定が指定されている)が異なる複数のポートレットが含まれることがあります。 たとえば、天気予報ポートレットの複数の登録を同じページに割り当てて、都市ごとに天気予報を表示させる場合が考えられます。
「ウィンドウ状態」は、ポートレットが生成したコンテンツに対して割り当てるポータルページの表示領域の数を意味します。 ポートレットコンテナは、起動したポートレットそれぞれに現在のウィンドウ状態を送信します。するとポートレットは、どの程度の量の情報を表示するかを決定します。 ポートレットは、アクション要求を処理する際に、ウィンドウ状態をプログラミングによって変更できます。
exteNd Directorポータルは、Java Portlet 1.0で定義されている標準ウィンドウ状態をサポートします。
ポートレットによって生成されたコンテンツは、「フラグメント」と呼ばれます。 フラグメントはそれぞれが「マークアップ」です。つまり、ドキュメントの論理構造を記述したり、印刷や表示の際のファイルの外観を指定する一連の文字やシンボルです。
exteNd Directorポートレットは、次の種類のマークアップをサポートします。
XMLコンテンツを生成するポートレットのスタイリングに関する節で説明されているように、exteNd Directorでは、XMLを生成するポートレットのスタイリングができます。
ポートレット要求と応答で説明されているように、ポートレットは表示要求に応答してコンテンツを生成します。 ポートレットの表示方法で説明されているように、ポートレットのウィンドウ状態とモードによって、コンテンツの表示方法が決められます。
ポータルは複数のポートレットのコンテンツを集約して、1枚のポータルページを作成します。
ポートレットのモードは、ポートレットがどんなアクティビティを実行するべきか、そしてどんなコンテンツを生成するべきかを示します。
exteNd Directorは、Java Portlet 1.0で指定された標準ポートレットモードをサポートします。
「ポートレットURL」とは、参照するポートレットによるアクションの要求を発生するURLです。 ポートレットはこれらのURLをコンテンツの一部として生成します。 ユーザが、たとえばURLを参照するリンクをクリックすることによって、ポートレットURLを選択すると、クライアントはポートレットによるアクションを求めて、ポータルへ要求を送信します。
ポートレットURLは2種類あり、いずれも異なるポートレット要求のシーケンスを発生します。
ポートレットURLの種類 |
発生する要求 |
---|---|
アクションURL |
1つのアクション要求の後、ポータルページ上のポートレットあたり1つの表示要求 |
表示URL |
ポータルページ上のポートレットあたり1つの表示要求 |
アクション要求と表示要求の詳しい内容については、ポートレット要求と応答を参照してください。
ポートレットAPIを使用して、次の情報をポートレットURLの中に組み込むことができます。
ポートレットコンテキストによって、各ポートレットが動作しているコンテナに関する情報が得られます。 コンテキストを介してポートレットは、次の動作を行うことができます。
ポートレットコンテキストの範囲は、ポートレットアプリケーションの種類によって異なります。
ポートレットアプリケーションの種類 |
ポートレットコンテキストの範囲 |
---|---|
局所型 |
Java仮想マシン(JVM)あたり1つのポートレットアプリケーションに対し、1つのコンテキストインスタンス |
分散型 |
JVMあたり1つのコンテキストインスタンス |
ポートレットコンテキストは、以下のようなポートレットアプリケーションのサーブレットコンテキストの機能を利用します。
その結果、ポートレットは、サーブレットや同一のWebアプリケーション内のJSPページとデータを共有できます。 セーブレットによってサーブレットコンテキストに保存されたデータおよびJSPページは、ポートレットコンテキストを介してポートレットからアクセスできます。 続いて、サーブレットコンテキストを介してサーブレットとJSPページからポートレットデータにアクセスできます。
Webクライアントは、ポータルによって実装された要求/応答パラダイムを使用して、ポートレットと通信します。 このパラダイムは、HTTP (Hypertext Transfer Protocol)の要求/応答モデルに基づいています。
ポートレット要求は、ユーザが、たとえばWebブラウザでリンク先へ移動したりフォームを送信したりするなどのように、ポータルページでポートレットが作成したコンテンツを操作するときに生成されます。 次に示すのは、典型的な要求/応答シナリオです。
ポートレット要求には、「アクション要求」と「表示要求」の2種類があります。 ポートレットURLで説明されているように、これらの要求は、ポートレットURLによって様々なシーケンスで発生します。
後の節で、各種のポータル要求とポータル応答について説明します。
「アクション要求」は、開発者が定義した入力パラメータのセットに基づいて、ポートレットに状態の更新を要求します。
ポートレットは、次のようなポートレット専用ロジックを実行することによって、アクション要求に応答します。
モードを変更する(ポートレットコンテナを参照)
ウィンドウ状態を変更する(ポートレットの表示方法を参照)
アクション要求は、ポートレットがコンテンツを表示する前に目的の状態に確実に変更できるように、アクションURLの表示要求よりも優先されます。 ポートレットウィンドウ状態とモードは、表示するコンテンツの量と種類に影響を与えるため、この動作順序は重要です。
たとえば、ポートレットがリンクを介してアクションを発生させたとします。 ユーザが、たとえばレコードを更新するためにリンクをクリックすると、ポータルの表示を行う前にポータルがアクションを処理することが保証されます。 こうして、表示されたコンテンツは、アクションによって更新されたデータを表示できます。
アクションURLを処理する場合は、ポートレットがアクション要求を完了した後に、ポートレットコンテナがポータルページに対する表示要求を発生させることが必要です。
「表示要求」は、現在の表示状態に基づいてコンテンツを生成するようポートレットに要求します。
表示URLは、特定のポータルページに対して複数の表示要求を発生させることがあります。 表示要求は順次実行されることもありますが、任意の順序で並行して実行されることもあります。
さらに詳しい内容は、同期対非同期処理に関する節を参照してください。
ポートレットは、コンテンツを直接作成することによって、あるいはサーブレットかJSPページにコンテンツを生成させることによって、表示要求に応答します。
この柔軟性によって十分な情報を得た上で、ポートレットがポータルページにコンテンツを供給する方法を決定できます。 たとえば、Webアプリケーション専用のコンテンツを生成するサーブレットが利用できる場合は、手順が簡略化でき、ポートレットはコンテンツ作成のタスクをサーブレットに依頼することができます。
コンテンツ表示は、ポートレットのモードとウィンドウ状態によって管理されます。 たとえば、ポートレットのウィンドウ状態が「最小化」であれば、コンテンツは何も表示されません。
詳細については、ポートレットの表示方法およびポートレットコンテナを参照してください。
各ポートレットアプリケーションには、ユーザセッションあたり1つのポートレットセッションオブジェクトが含まれます。 ポートレットセッションオブジェクトによって、ポートレットアプリケーションのすべてのリソースが情報を共有することができます。
ポートレットアプリケーションには、ポートレットに加えて、サーブレットとJSPページが組み込まれていることを思い出してください。 データ共有を容易にするために、ポートレットセッションは、すべての属性をポートレットアプリケーションのHTTPセッションに保存します。 その結果、ポートレットはPortletSessionメソッドを使用して、サーブレットまたはJSPページによって保存されたHttpSessionオブジェクト内のデータにアクセスします。 同様に、サーブレットとJSPページはHttpSessionメソッドを使用して、ポートレットによって保存されたPortletSessionオブジェクト内のデータにアクセスします。
PortletSessionメソッドは、同じ名前のHttpSessionメソッドに基づいています。
実行時には、ポートレットは、ポートレットの動作と作成するコンテンツを決定する属性を持つ初期設定オブジェクトに関連付けられている。 ポートレット初期設定は、ポートレットクラスで定義されているため、ポートレットごとに異なります。
exteNd Directorが可能にする柔軟なパラダイムによって、ポートレットオブジェクトモデルに基づいてポートレット初期設定を4つのレベルのプライオリティで使用することが可能となります。
優先度 |
タイプ |
説明 |
指定場所 |
指定方法 |
---|---|---|---|---|
1 (最高値) |
ユーザレベル初期設定 |
ポートレットページのインスタンス上にユーザが実行時に定義した、書き込み可能設定 特定のページ上の任意のポートレットに対して、「定義レベル」、「登録レベル」、および「ページ割り当てレベル」の初期設定を上書きする。 このレベルでは、異なるページ上の同じのポートレットに対して、または同じページ上の単一のポートレットの各インスタンスに対して、異なる初期設定を適用できます。 |
ユーザ初期設定データの保存 |
ポートレット初期設定を、たとえばポートレットの編集モードなどの実行時に編集する。 |
2 |
ページ割り当てレベル初期設定 |
ポートレット登録がポータルページに割り当てられたときに、ポートレットに対して定義される書き込み可能初期設定。通常は展開と登録の後で、管理者が登録。 特定のページ上の任意のポートレット登録に対して、「定義レベル」と「登録レベル」の初期設定を上書きする。 このレベルでは、異なるページ上の同じのポートレットに対して、または同じページ上の単一のポートレットの各登録に対して、異なる初期設定を適用できます。 |
ポータル管理ツール |
ポータル管理ツールを使用して、ポートレットに共有ページとコンテナページを割り当てる。
|
3 |
登録レベル初期設定 |
ポートレットインスタンスが登録されたときに、ポートレットインスタンスに対して定義された書き込み可能初期設定。通常は、展開後に管理者が定義。 任意のポートレット登録に対して、「定義レベル」を上書きする。 注記: 登録されたポートレットインスタンスは、「ポートレット登録」と呼びます。 |
DAC (Director Administration Console) |
DAC (DirectorAdministration Console)を使用して、ポートレットインスタンスを登録します。
|
4 (最低値) |
定義レベル初期設定 |
デフォルトで設定。ポートレット定義に対して定義された読み取り専用初期設定。 展開後は、これらの初期設定値の修正はできません。 |
ポートレット展開記述子 |
ポートレット展開記述子を編集する。
|
ポートレットコンテナは、ユーザに公開する初期設定と値を決定します。 実行時に、ポートレットコンテナは最高値から最低値まで初期設定値を検索し、最初に一致したレベルで停止します。 たとえば、ポートレットコンテナがページ割り当て初期設定の中に目的の値を発見すれば、登録初期設定や記述子初期設定での検索は行いません。
ポートレットは、次のアクティビティの間、初期設定オブジェクトに関連付けられています。
ポートレットは、初期設定属性値の読み取り、修正、および追加を行うことがあります。
プログラミングによって各レベルで初期設定を取得し、保存する方法については、ポートレット初期設定の取得と保存についての節を参照してください。
ポートレット設定は、ポートレットがポータルと通信する方法を規定します。 設定はポータルによって定義され、アプリケーションのポートレット登録とポートレットページインスタンスへ適用できます。
ポートレット登録とポートレットページインスタンスについての詳細は、ポートレットオブジェクトモデルを参照してください。
標準設定 exteNd Directorは次のポートレット設定を定義します。
これらの設定は、ポータル管理者がexteNd Directorポートレット展開記述子のnovell-portlet.xmlに定義されています。 これらは、登録とページ割り当ての段階で、管理者が修正することもできます。
ポータルオプション exteNd Directorは、ポータルオプションとしても知られる次のオプションのポータル設定を定義します。
各ポートレットは、novell-portlet.xmlで定義された<supported-options>要素内のどのオプションをサポートするか(サポートする場合)を指定します。さらに詳しい内容は、ポータルオプションを操作するに関する章を参照してください。
Copyright © 2004 Novell, Inc. All rights reserved. Copyright © 1997, 1998, 1999, 2000, 2001, 2002, 2003 SilverStream Software, LLC. All rights reserved. more ...