ページの要素

ページの要素

Jetspeed2 によるポートレットの配備、Jetspeed2 自体のカスタマイズ方法を説明していく前に、「インストールと実行」で表示した画面について説明していきます。この辺の話については、JSR 168 の PLT.4 あたりでふれられています。

ポータルページの要素

まず、Jetspeed2 を起動したときの画面を見てみましょう。

画像:ポータルページの要素

上の画像でこのページ全体はポータルページと呼ばれます。次に、(1) は企業のロゴや広告など表示するページのヘッダーを表示します。(2) はポータルページへのリンクがタブで表示されます。Jetspeed2 では、各ページを PSML ファイルで管理されており、同じ階層にある PSML ファイルが表示されています。(3) は異なるディレクトリ階層にある PSML へのリンクを「フォルダ&ページ」、外部へのリンクが「追加リンク」として表示されます。「フォルダ&ページ」は、PSML ファイル群があるディレクトリへのリンクになります。「追加リンク」は、そのディレクトリにある、.link ファイルが表示されます。(4) はポートレットが表示されるエリアです。この図では、レイアウトポートレットにより2列でポートレットを表示しています。(5) はページのフッターです。

ここで、Jetspeed2 は、(1), (2), (3), (5) について、レイアウトデコレータという単位で管理しています。このデコレータをカスタマイズすることで、独自のレイアウトを作成することができます。Jetspeed2 では、http://style.tigris.org/ より提供されるスタイルシートを元に作成された tigris レイアウトデコレータをデフォルトで使用しています(補足1)。

補足1
私が移植作業を担当しました :)
ポートレットウィンドウ
次にポートレットのコンテンツが表示される部分である、ポートレットウィンドウを見てみましょう。

画像:ポートレットウィンドウ

上の画像をは、Jetspeed2 上に表示されるペットストアのデモのポートレットです。(1) の部分には、ポートレットのタイトルや、コントロール(つまり、ボタンです。たとえば、最小化ボタン、最大化ボタン、編集モードに切り替えるボタンなどなどです)が表示されます。(2) は、ポートレットフラグメントと呼ばれ、ポートレットのコンテンツが表示されます。この部分は、各ポートレットのレンダリング処理に任されます。 Jetspeed2 では、(1) の部分について、カスタマイズ可能です。Jetspeed2 では、(1) の部分をポートレットデコレータという単位で管理していて、各ポートレットに自由にPSML内で指定することができます。Jetspeed2 では、tigrisポートレットデコレータを利用しています。(補足2)

ポートレットデコレータは、ポートレットのコンテンツ自体のスタイルシートの設定も含んでいます。ポートレットのスタイルシートについては、JSR 168 の PLT.C に定義されています。つまり、ポートレットを作るときにこのスタイルシートの定義を正しく適用していれば、様々なポータルサーバーでポートレットを提供したときに、そのポータルサーバーのポートレットのレイアウトやデコレータで適切に表示を可能にします。ですので、ポートレットを作る際には、できる限り、この仕様に準拠するように作成しましょう。PLT.C の定義については、OASIS Web Services for Remote Portlets で定義されているものとほぼ同じです(OASIS の方が少し定義が多いです)補足3。

補足2
これまた、私が担当しました ;)
補足3
個人的には、PLT.C の定義では、ユーザーの環境によっては、すべてをカバーできるとは思っていません。ですので、PLT.C をベースにして、それに付け足すような感じで作成するのが良いのではないでしょうか。

インストールと実行

インストール

まずは、ビルドの方法などを示す前に、実際に動かした方がイメージがつかみやすいと思うので、バイナリをダウンロードして、動かすことにしましょう。バイナリは、Apache のサイトよりダウンロードできます。http://ftp.kddilabs.jp/infosystems/apache/portals/jetspeed-2/BINARIES/ などからダウンロードしてください。現時点での最新バージョン(6/1)は、2.0 M3 になります。jetspeed-2.0-M3-Tomcat-5.0.30.tar.gz をダウンロードして、展開してください。

$ cd
$ ls
jetspeed-2.0-M3-Tomcat-5.0.30.tar.gz
$ mkdir jetspeed
$ cd jetspeed
$ tar zxvf ../jetspeed-2.0-M3-Tomcat-5.0.30.tar.gz

すると、jakarta-tomcat-5.0.30 と jetspeed-database というディレクトリが作成されます。jakarta-tomcat-5.0.30 は、Jetspeed2 が配備された状態の Tomcat です。また、jetspeed-database は、Jetspeed2 で利用するデータベースとその設定ファイルが含まれています。Jetspeed2 を簡単に実行できるようにするため、HSQL もその中に含まれています。

実行

実行方法を簡単に説明すると、まず、HSQL のデータベースを起動してから、次に Tomcat を起動します。Tomcat を起動したときに、各ポートレットが配備され、その情報をデータベースに書き出しています。

早速、データベースを起動してみましょう。

$ cd jetspeed-database/
$ ./start-database.sh
server.properties not found, using command line or default properties
Opening database: hsql/Production
HSQLDB server 1.7.1 is running
Use SHUTDOWN to close normally. Use [Ctrl]+[C] to abort abruptly
Wed Jun 01 07:43:00 JST 2005 Listening for connections ...

以上のようにデータベースが正常起動されたら、Tomcat を起動します。

$ cd jakarta-tomcat-5.0.30/
$ ./bin/startup.sh
Using CATALINA_BASE:   /home/taro/jetspeed/jakarta-tomcat-5.0.30
Using CATALINA_HOME:   /home/taro/jetspeed/jakarta-tomcat-5.0.30
Using CATALINA_TMPDIR: /home/taro/jetspeed/jakarta-tomcat-5.0.30/temp
Using JAVA_HOME:       /home/java/j2se

以上の作業で特にエラーも表示されなければ、ブラウザで http://localhost:8080/jetspeed/ にアクセスしてみてください。以下のような Jetspeed2 の Welcome ページが表示されます。

画像:Welcomeページ

初めて起動する場合は、前述したように、ポートレットの登録作業が発生するので、その登録作業が完了する前にアクセスした場合はポートレットが表示されません。その場合は、しばらくしてから、再度アクセスしてみてください。

デフォルトで利用できるユーザーは、admin, tomcat, subsite, subsite2 などが登録されています。まずは、ログインポートレットで、管理者 admin でログインしてください。パスワードは admin です。管理者でログインすることで、各種設定が行えます。

はじめに

はじめに

Jetspeed2 は、Apache Software Foundation から提供されているオープンソースのポータルサーバーですが、このポータルサーバーとは何でしょうか?また、なぜ、そのようなものが必要なのでしょうか?まず、ポータルサーバーが何かということを考えると、いろいろな散在する情報を一カ所にまとめ、その情報を提供・管理できるサーバーと言えるのではないでしょうか。そして、その情報を必要とする人がそこに集まってくることになると思います。今日では、各社からポータルサーバーといわれるものがいろいろと提供されています。また、その機能をサービスとして、提供しているところもあります。たとえば、Yahoo などが企業ポータルとしての機能 を提供しています。

次に、なぜそのようなものが必要なのかを考えてみましょう。たとえば、あなたの仕事で情報が散在していると感じたことはないでしょうか?ある情報はあるファイルシステム上のファイルに保存されていたり、またある別の情報は、どこかのWeb上にあったりと・・・。こうなると、必要な情報は、管理している人だけしかわからず、情報を得るためにはいちいち、担当者に確認しないと得ることはできません。これでは、面倒ではです。ですので、ある一カ所に情報をまとめることで、わからない情報があったときには、そこにいけば手に入るというのが理想的です。そうしておけば、たとえば、新人が来たときでも、とりあえず、そこのURLを教えてあげれば、いろいろと情報を得ることができ、情報の共有といった点からも効率的に行うことができるでしょう。つまり、その情報がまとまってある場所への入り口(ポータル)と言えるのではないでしょうか。

Jetspeed とは

Jetspeed は、Java ベースの企業情報ポータル (EIP: Enterprise Information Portal) の実装です。企業情報ポータルとは、企業内の様々なシステム上に保存されている情報を一元管理することで、ユーザーの画面 (たとえば、ブラウザ上) にまとめて表示したり、そこから情報検索を実行することができるシステムです。EIP を導入することによって、企業システムを横断的に統合され、今まで散在していた情報にすばやくアクセスすることができるので、社員個々の業務の効率化や、意志決定権を持つ経営層から部門や現場レベルでの情報共有が可能になります。Jetspeed は、企業情報ポータルを機能をオープンソースで提供し、各情報の表示・処理はポートレットで実行されます。

ポートレットは、ポータルサーバー上で様々なサービスやアプリケーションを処理する構成要素です。いろいろな企業からポータルサーバーがリリースされていますが、各社でその仕様は統一されていませんでした。その状況を改善するために定義されたのが JSR 168 になります。この標準に準拠していれば、ポータルサーバーに依存することなく、提供されたポートレットを配備・実行することができます。

Jetspeed は、現在、バージョン 1.6 と 2.0 M3 (2005/05/29 時点) の2種類がリリースされています。バージョン 1.x 系は、ポータルサーバーとして利用するための機能は一通り実装され、その実装自体は Turbine ベースで作成されています。そのため、機能を拡張しようとした場合には、Turbine のイベント処理モデルの制約も受けることになります。配備できるポートレットについては、基本的には、独自のポートレットを使用することになります。ここで、「基本的に」といったのは、最近では、JSR 168 のポートレットを利用するために、Fusion という機能が追加されたためです。Fusion は、Jetspeed 2 の JSR 168 のポートレットを実行するための機能を取り出して、Jetspeed 1 で利用できるようにしたものです。Fusion 機能を利用したい場合は、ビルドするときにプロパティで Fusion を利用するかどうか指定する必要があるため、その機能が付加されているバイナリを利用する必要があります。Fusion により、Jetspeed 1 でも、JSR 168 のポートレットが利用できるようになりましたが、現在では、Jetspeed の開発者は、Jetspeed 2 の開発に焦点を合わせています。そのため、今後、積極的に Jetspeed 1 にたいして、機能拡張される可能性は低いと言えるでしょう。

バージョン 2.0 系は、標準に準拠したポートレットを配備することができるポータルサーバーであり、Turbine などに依存することなく、1から実装し直されています。各機能については、コンポーネント化されているため、機能を拡張したり、独自のコンポーネントを作成して導入したい場合などが容易にできます。コンポーネントの管理は、Spring を利用しています。ですので、より細かいコンポーネントの管理をしたい場合は、Spring の知識が必要になってくるでしょう。このように機能をコンポーネント化されたことにより、Fusion のようなものも実現できるようになったと言えます。

JSR 168 準拠のポートレットの処理するために、Jetspeed 2 では、Pluto を利用しています。Pluto は、JSR 168 の Java ポートレットの仕様に関するリファレンス実装です。Pluto は、今日では、様々なオープンソースのポータルサーバーで利用されています。

Jetspeed 2 で格納されているデータは、ほとんどがデータベースを用いて管理されています。標準では、HSQL を利用しています(Jetspeed の開発者は MySQL を用いて開発を行っていると思います。HSQL で開発するのは一手間あるので、私も MySQL を用いています)。データベースへのアクセス自体は、もちろん SQL を直接記述することはなく、OJB を用いています(補足1)。ですので、データベースへのデータの流れを知りたい場合は、OJB に関する知識が必要になるでしょう。

補足1

なぜ、Hibernate などを使わずに OJB を使うのでしょうか?それは、OJB は Apache ライセンスで提供されているためです。Apache では、LGPL などを利用できないそうです。私は法律家ではないので、これくらいにしておきます・・・