ポータルサーバーは一つのウェブアプリケーションです。 そのため、ポータルサーバーを動作させるためにはアプリケーションサーバーが必要になります。
ポートレットも同様に一つのウェブアプリケーションです。 ポートレットの配備はポータルサーバーに対して配備を実行しますが、最終的にはアプリケーションサーバー上に配備されることになります。 クライアントからのアクセスは、通常のウェブアプリケーションと同様にポータルサーバーにアクセスされた後に、ポータルサーバーからポートレットへのクロスコンテキストのアクセスにより、ポートレットのコンテンツを取得し、その結果を集約して、クライアントへ出力します。
PALポータルは、コンポーネントのパイプライン処理に基づいて、ユーザーからのリクエストを処理します。
クライアントからのアクセスがあると、ポータルサーバー内ではそのリクエストを RequestContext というインスタンスとして扱います。 その RequestContext を Spring で設定したコンポーネントバルブに順に渡して処理していきます。 その中でポートレットコンテナを呼び出し、ポートレットを処理します。 処理の終了後、その結果を集約して、クライアントへ出力します。
PALポータルのアーキテクチャは Martin Fowler によって以下のように定義されたコンポーネントアーキテクチャに基づいて構築されています。
コンポーネントという言葉は、変更なしに、コンポーネントの作者の管理から外れたアプリケーションとして使われることを意図したソフトウェア群を意味しています。 「変更なしに」という言葉は、ユーザーがコンポーネントの作者によって許された方法でコンポーネントを拡張し、その動作を変化させることはあるかもしれないけれども、アプリケーションを使う場合に、コンポーネントのソースコードを変えることなくアプリケーションを使うことを意味します。
PALポータルはプログラミングのデザインパターンと構造上のモデルとして、依存性注入を使います。 これは、公開されているインターフェースを通して抽象化のレベルを構築するためであり、そしてコンポーネントの実装における依存性をなくすためです。 この構造はコンポーネントがそれ自身とリンクしたり、お互いにリンクする構造でなく、コンポーネントと結合します。 依存性注入はオブジェクトの作成やオブジェクトのリンクの機能をオブジェクト自身から削除し、ファクトリへ移したパターンです。 それゆえ、依存性注入は明らかにオブジェクトの作成とリンクの制御を反転させており、Inversion of Controls(制御の反転, IOC) の形であると考えることができます。
PALポータルはデフォルトのコンポーネントフレームワークとして Spring フレームワーク を利用しています。 しかし、PALポータルはコンポーネントフレームワークを、たとえば Pico のような代替可能なコンポーネントフレームワークに容易に置き換えることが可能な構造をしています。
PALポータルのコンポーネントフレームワークの組み立ては JetspeedServlet 内に実装されています。
JetspeedServlet
は起動時のロードのためにポータルアプリケーションの web.xml で設定されます。
initializeComponentManager
メソッドは与えられたコンポーネントフレームワークのコンポーネント群をロードします。
initializeComponentManager
のデフォルトの実装はコンポーネントフレームワークとして Spring フレームワーク をサポートします。
そして Spring エンジンを初期化するために webapps/palportal/WEB-INF/assembly
以下の xml ファイルを解釈します。
JetspeedEngine は適切なコンポーネントマネージャを使って構成されます。
engine = new JetspeedEngine(properties, applicationRoot, config, initializeComponentManager(config, applicationRoot, properties));
他のコンポーネントフレームワークをサポートするためには、開発者は initializeComponentManager
の実装をオーバーライドしてください。
クライアント識別 - アーチファクト ID: jetspeed-capability | |
---|---|
コンポーネント名 | 説明 |
Capabilities
| Capabilities コンポーネントはクライアントを、サポートされる MIME タイプやメディアタイプにマップします。このコンポーネントは CapabilityMap を生成します。CapabilityMap はポータルエンジンを通して、対象となるクライアント用にポータルコンテンツを表示するために利用されます。 |
コンポーネットマネージャ - アーチファクト ID: jetspeed-cm | |
---|---|
コンポーネント名 | 説明 |
ComponentManager
| ComponentManager は、使用するコンポーネントフレームワークのトップに位置する抽象的な標準レイヤーを提供します。PALポータルのデフォルトの ComponentManager の実装は SpringComponentManager です。
|
配備ツール - アーチファクト ID: jetspeed-deploy-tools | |
---|---|
コンポーネント名 | 説明 |
JetspeedDeploy
| JetspeedDeploy は PALポータルに配備される前にポートレットアプリケーションの準備をします。 |
DeploymentManager
| DeploymentManager は配備される新しいポータル資産 (ポートレットやデコレータ) を待機します。 |
ポータル - アーチファクト ID: jetspeed-portal | |
---|---|
コンポーネント名 | 説明 |
Pipeline
| Pipeline は PALポータルのリクエストで最小単位の動作である Valve を統合します。 |
プリファレンス - アーチファクト ID: jetspeed-prefs | |
---|---|
コンポーネント名 | 説明 |
PreferencesProvider
| PreferencesProvider は PALポータルの java.util.Preferences API の実装です。 |
RDBMS - アーチファクト ID: jetspeed-rdbms | |
---|---|
コンポーネント名 | 説明 |
ConnectionRepositoryEntry
| ConnectionRepositoryEntry は PALポータルの java.util.Preferences API の実装です。 |
InitablePersistenceBrokerDaoSupport
| InitablePersistenceBrokerDaoSupport は PALポータルにおいてデータアクセスと永続性のサポートを提供します。 |
セキュリティ - アーチファクト ID: jetspeed-security | |
---|---|
コンポーネント名 | 説明 |
DefaultLoginModule
RdbmsPolicy
| PALポータルにおける JAAS サービス のデフォルトの実装。PALポータルはポータルエンジンにセキュリティの機能を公開するための標準のセキュリティフレームワークとして JAAS を利用します。JAAS サービスは PALポータルのセキュリティ SPI を通して特定の実装が提供されるために PALポータルの粗い単位のサービスを利用します。 |
UserManager
RoleManager
GroupManager
PermissionManager
| PALポータルのセキュリティ管理 API を公開する粗い単位のセキュリティコンポーネント |
UserSecurityHandler
CredentialHandler
GroupSecurityHandler
RoleSecurityHandler
SecurityMappingHandler
| 特定の実装を PALポータルのセキュリティエンジンに公開する細かい単位のセキュリティ SPI コンポーネント。この仕組みは高レベルのセキュリティサービスに影響することなく、複数のセキュリティ実装をサポートするために柔軟なフレームワークを提供します。 |
統計 - アーチファクト ID: jetspeed-statistics | |
---|---|
コンポーネント名 | 説明 |
PortalStatistics
| PortalStatistics はデータのコレクションとデータの検索のための PALポータルのデータコレクション API です。 |
BatchedStatistics
| BatchedStatistics は与えられた期間の統計データのバッチコレクションに対する処理を行います。 |
AggregateStatistics
StatisticsQueryCriteria
| AggregateStatistics は、StatisticsQueryCriteria が提供する特定のイベントと検索基準に対する集約ポータルデータを提供するために、PortalStatistics コンポーネントとやりとりを行います。 |