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のコンフィギュレーションをアプリケーションサーバにデプロイする形で利用する。GlassFishとApache 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]を押せばインストール完了となる。
続いてWSRPをプロンプト2のようにしてインストールする。
プロンプト2
> java -jar wsrp-configurator.jar D:\GlassFish D:\GlassFish\domains\domain1
インストールできたらGlassFishを再起動すれば設定が有効になる。ブラウザから次のURLにアクセスし、図2のようにWSRPの管理画面が表示されたらインストールは完了だ。
初期状態ではプロデューサとコンシューマを管理するポートレットがそれぞれ1つづつ用意されている。ポートレットの追加は[Admin]タグのページから行える。ポートレットの作成方法は前回紹介したのでここでは省略し、ここで配布されているサンプルのポートレットを使ってみる。
使用したいポートレットのWARファイルをダウンロードし、管理画面から図3のようにして配備する。
プロデューサの作成は、図2の画面から「WSRP Producer Admin Portlet」を使って行うことができる。[New]ボタンをクリックすると図4の画面になるので、ここでプロデューサ名とレジストレーションの有無を設定する。
プロデューサが作成されると、図5のように一覧に表示される。ここでプロデューサ名をクリックすると図6の画面に移行して詳細を設定できる。「Unpublished Portlets」には非公開のポートレットの一覧が表示されているので、このうち公開したいものを選んで[Add]をクリックし、「Published Portlets」の方に移動させる。また、「Status」を[Enabled]にしておく。
続いてコンシューマを作成する。コンシューマは図2の画面から「WSRP Consumer Admin Portlet」を使って作成できる。[New]ボタンをクリックすると図7の画面になるので、ここで接続するプロデューサのWSDLのURLを入力する。
[Get]をクリックすると図8の設定画面になるので、コンシューマ名やレジストレーションの設定を行う。
コンシューマが作成されると、図9のように一覧に表示される。ここで[Create]をクリックすると、クライアント側で表示するウィンドウの設定を行うことができる。図10のように表示されるので、有効にするポートレットを選択し、ウィンドウ名を設定する。
以上でプロデューサ、コンシューマの設定は完了だ。クライアントからコンシューマにアクセスすれば、作成したウィンドウを見ることができる。OpenPortal WSRPでは[WSRP]タグのページがクライアントの機能を提供しており、図11のようにコンシューマから取得したポートレットが表示される。