Web Services for Remote Portlets

前回はJavaプラットフォーム向けのポートレット仕様であるJSR 168を紹介したので、今回はそれに関連してOASISによるWSRP(Web Services for Remote Portlets)という仕様を紹介したい。WSRPはJCPによる標準ではないが、多くのアプリケーションサーバがこれに準拠したポータルの機能を提供している。

WSRPは、ポートレットをWebサービス経由で遠隔のポータルに対して提供したり、逆に遠隔にあるポートレットを手元のポータルに取り込んだりすることができる規格である。このとき、ポートレットの提供側を「プロバイダ」、利用側を「コンシューマ」と呼ぶ。プロデューサはポートレットをホストし、それをサービスとしてWebサービスプロトコル経由でコンシューマに提供する。

コンシューマはプロデューサから受け取る情報を集約し、それを他のポータルに表示する。クライアントがコンシューマに対してポータルを要求すると、コンシューマではそれを適切なプロデューサに転送する。プロデューサはリクエストを処理して結果をコンシューマに返し、コンシューマはそれをクライアントに転送する。

このような仕組みにすることで、ひとつのサーバや場所に依存しないポータルサービスを実現することができる。また、アプリケーションの配備とサービスとしての提供を分離することが可能となる。

WSRPの現行仕様は2003年に発行されたもので、現在は次期バージョンとなるWSRP v2.0の仕様策定が進められている。v2.0ではポートレット同士の協調動作を実現するInter-Portlet通信など、様々な新機能が追加される予定。現在はPublic Review Draft 03が公開されている。なお、JSR 168の後継バージョンとなるJSR 286でも、WSRP v2.0への対応を謳っている。

OpenPortal WSRPを利用する

現行のWSRP 1.xに対応したアプリケーションサーバは多数あるが、その中でも今回はオープンソースで開発が行われているOpenPortal WSRPを使用してみる。OpenPotalプロジェクトはオープンソースのポータルサーバを開発する目的でスタートしたプロジェクトであり、そのサブプロジェクトのひとつがOpenPortal WSRPプロジェクトだ。

OpenPortal WSRPは、ポータルコンテナとドライバ、そしてWSRPのコンフィギュレーションをアプリケーションサーバにデプロイする形で利用する。GlassFishApache Tomcatに対応しているので、今回はGlassFishを使用したい。ここではD:\GlassFishディレクトリにGlassFishがインストールされており、domain1というドメインが設定済みであるとして解説を進める。

OpenPortal WSRPはこのページよりダウンロードできる。WSRP 1.0に準拠した「1.0 Stable Nightly」と、WSRP 2.0のドラフトに対応した「2.0 Milestone 1 Preview」があるが、今回は「1.0 Stable Nightly」の方を使用する。

必要なファイルは「Portlet Container」(ファイル名portlet-container-configurator.jar)と「WSRP」(ファイル名wsrp-configurator.jar)の2つ。まず、Portlet Containerの方をコマンドラインからプロンプト1のように実行する。

プロンプト1

> java -jar portlet-container-configurator.jar

図1のようなウィンドウが表示されるので、GlassFishのインストール先とドメインディレクトリのパスを入力し、[Ok]をクリックする。デプロイに成功したら[Quit]を押せばインストール完了となる。

図1 Portlet Containerのインストール

続いてWSRPをプロンプト2のようにしてインストールする。

プロンプト2

> java -jar wsrp-configurator.jar D:\GlassFish D:\GlassFish\domains\domain1

インストールできたらGlassFishを再起動すれば設定が有効になる。ブラウザから次のURLにアクセスし、図2のようにWSRPの管理画面が表示されたらインストールは完了だ。

図2 WSRPの管理画面

初期状態ではプロデューサとコンシューマを管理するポートレットがそれぞれ1つづつ用意されている。ポートレットの追加は[Admin]タグのページから行える。ポートレットの作成方法は前回紹介したのでここでは省略し、ここで配布されているサンプルのポートレットを使ってみる。

使用したいポートレットのWARファイルをダウンロードし、管理画面から図3のようにして配備する。

図3 ポートレットの配備

プロデューサの作成は、図2の画面から「WSRP Producer Admin Portlet」を使って行うことができる。[New]ボタンをクリックすると図4の画面になるので、ここでプロデューサ名とレジストレーションの有無を設定する。

図4 プロデューサの作成

プロデューサが作成されると、図5のように一覧に表示される。ここでプロデューサ名をクリックすると図6の画面に移行して詳細を設定できる。「Unpublished Portlets」には非公開のポートレットの一覧が表示されているので、このうち公開したいものを選んで[Add]をクリックし、「Published Portlets」の方に移動させる。また、「Status」を[Enabled]にしておく。

図5

図6

続いてコンシューマを作成する。コンシューマは図2の画面から「WSRP Consumer Admin Portlet」を使って作成できる。[New]ボタンをクリックすると図7の画面になるので、ここで接続するプロデューサのWSDLのURLを入力する。

図7

[Get]をクリックすると図8の設定画面になるので、コンシューマ名やレジストレーションの設定を行う。

図8

コンシューマが作成されると、図9のように一覧に表示される。ここで[Create]をクリックすると、クライアント側で表示するウィンドウの設定を行うことができる。図10のように表示されるので、有効にするポートレットを選択し、ウィンドウ名を設定する。

図9

図10

以上でプロデューサ、コンシューマの設定は完了だ。クライアントからコンシューマにアクセスすれば、作成したウィンドウを見ることができる。OpenPortal WSRPでは[WSRP]タグのページがクライアントの機能を提供しており、図11のようにコンシューマから取得したポートレットが表示される。

図11