アーキテクチャについて

ポータルサーバーは一つのウェブアプリケーションです。 そのため、ポータルサーバーを動作させるためにはアプリケーションサーバーが必要になります。

ポートレットも同様に一つのウェブアプリケーションです。 ポートレットの配備はポータルサーバーに対して配備を実行しますが、最終的にはアプリケーションサーバー上に配備されることになります。 クライアントからのアクセスは、通常のウェブアプリケーションと同様にポータルサーバーにアクセスされた後に、ポータルサーバーからポートレットへのクロスコンテキストのアクセスにより、ポートレットのコンテンツを取得し、その結果を集約して、クライアントへ出力します。

ポータル内の処理

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 コンポーネントとやりとりを行います。