ビルド方法

ビルド方法

ここでは、Apache にある Subversion のリポジトリから Jetspeed2 のソースコードを取得して、そのビルド方法を説明します。

ソースコードの取得

Apache では、従来の CVS 管理のリポジトリに加え、様々なプロジェクトで CVS から Subversion への移行が進んできます。Jetspeed も、現在、CVS から移行しています。ですので、CVS も読み込みだけができる状態でアクセスすることが可能です。最新のソースコードを入手するためには、Subversion のリポジトリから取得する必要があります。

では、早速、チェックアウトしていきましょう。チェックアウトするにはもちろん Subversion が必要になるので、http://subversion.tigris.org/ から入手してください。

$ cd
$ mkdir svn
$ cd svn/
$ svn checkout http://svn.apache.org/repos/asf/portals/jetspeed-2/trunk/ jetspeed-2

指定する URL には、http と https の2種類がありますが、ビルドして利用するだけなら、http の方で問題ありません。https の方は、コミッターが編集をコミットするときなどに利用します。

ビルド環境の準備

ビルド・配備をしていくには、以下のものが必要になります。各サイトよりダウンロードしてください。

表:ビルド・配備に必要なもの
名前 	バージョン
Maven 	1.0 以上
Java 	1.4.2_02 以上
Servlet API(Tomcat)
2.3 以上
(Tomcat 5.0.30 以上またはTomcat 5.5.8以上)

今回は、Maven 1.0.2 でビルドを実行して、Tomcat 5.0.30 に配備します。Jetspeed 2 では、Tomcat 4.x をサポートしていないので、注意してください。

$ cd
$ mkdir apache
$ cd apache/
$ tar zxvf ../jakarta-tomcat-5.0.30.tar.gz
$ tar zxvf ../maven-1.0.2.tar.gz

$HOME/apache 以下に展開したので、次に Maven を利用するために環境変数を設定しておきます(Java は /usr/java にインストールしてあるものとします)。たとえば、.bashrc などに

export JAVA_HOME=/usr/java/
export MAVEN_HOME=$HOME/apache/maven-1.0.2
export PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH

として、

$ . ~/.bashrc

を実行して、その設定を有効にします(次回のログインしたときには、有効になっているので、これは行う必要はありません)。Maven でビルドしていく前に、Maven が正しくインストールされているか確認するために、

$ maven -v
__  __
|  \/  |__ _Apache__ ___
| |\/| / _` \ V / -_) ' \  ~ intelligent projects ~
|_|  |_\__,_|\_/\___|_||_|  v. 1.0.2

で Maven が実行できることを確認してください。以上のようにバージョン情報が表示されれば、問題ありません。

プロパティの設定

Jetspeed2 をビルド・配備するためには必要なプロパティをいくつかあります。その設定は Maven で利用されるプロパティであり、それらを設定するためには、${USER_HOME}/build.properties ファイルを作成して、以下のプロパティを環境に応じて、build.properties に記述してください。

JETSPEED2 のビルドに必要な設定 プロパティ 	説明
org.apache.jetspeed.project.home 	チェックアウトした Jetspeed2 のソースコードの場所を指定します。
org.apache.jetspeed.server.home 	インストールしたTomcatサーバーのルート
org.apache.jetspeed.catalina.version.major 	Tomcatのバージョン:Tomcat 5.0.x (5を指定) または 5.5.x? (5.5を指定) (4.x 系はサポートしていません)
org.apache.jetspeed.server.shared 	インストールしたTomcatの共有するJarファイルを置く場所
org.apache.jetspeed.deploy.war.dir 	Tomcat内でWebアプリケーションを配備する場所
org.apache.jetspeed.services.autodeployment.user 	manager ロールをもつTomcatユーザー。 Tomcat設定の章を参照してください。
org.apache.jetspeed.services.autodeployment.password 	Tomcat の manager ユーザーのパスワード。

Jetspeed2 では、デフォルトでは HSQL を利用していますが、それ以外にも MySQL などの様々なデータベースを利用することができます。デフォルトで利用されるHSQL以外のデータベースでJetspeedを開発実行するためには、データベース設定 のプロパティ設定を参照してください。

以上のプロパティ値を設定すると、たとえば、以下のようになります。ここでは、ユーザー名を taro として、そのホームディレクトリを /export/home/taro としています。

org.apache.jetspeed.project.home=/export/home/taro/svn/jetspeed-2
org.apache.jetspeed.server.home = /export/home/taro/apache/jakarta-tomcat-5.0.30/
org.apache.jetspeed.catalina.version.major=5
org.apache.jetspeed.server.shared = ${org.apache.jetspeed.server.home}/shared/lib
org.apache.jetspeed.deploy.war.dir = ${org.apache.jetspeed.server.home}/webapps/
org.apache.jetspeed.services.autodeployment.user=j2deployer
org.apache.jetspeed.services.autodeployment.password=j2deployer

Tomcat 設定

次に Tomcat を設定します。Jetspeed2 は、ポートレットライフサイクルマネージャポートレットを利用してポートレットを管理するために、Tomcatマネージャアプリケーションを利用することができます。 それを利用するためには、${CATALINA_HOME}/conf/tomcat-users.xml で manager ロールを設定して、そのロールを持つ Tomcat のユーザーが必要になります。

manager ロールを持つ、j2deployer ユーザーをパスワードを j2deployer として設定した場合、そのtomcat-users.xml は次のようになります。


<tomcat-users>
<role rolename="manager"/>
<user username="j2deployer" password="j2deployer" roles="manager"/>
</tomcat-users>

以上の設定は設定例であるので、実際に運用する場合などには、より適切なユーザー名とパスワードを使用してください。

上のように設定した場合は、build.properties に次のプロパティが必要になるので、tomcat-users.xml のユーザー名とパスワードを変更している場合は、前節で保存した build.properties にある値も併せて変更してください。

org.apache.jetspeed.services.autodeployment.user=j2deployer
org.apache.jetspeed.services.autodeployment.password=j2deployer

Jetspeed2 のビルド

いよいよ、Jetspeed2 をビルドしていきます。Jetspeed2 は複数のコンポーネントから構成されているので、ビルドは、Maven の reactor を用いて、各コンポーネントを呼び出しビルドを実行しています。Jetspeed2 をビルドするために使われるゴールは、主に initMavenPlugin、allClean と allBuild の3つです。initMavenPlugin は Jetspeed2 のビルドで利用されるゴールをまとめたもので(将来、Maven2 に移行するために各ゴールの処理をプラグインに集約しています)、allClean は、その名の通り、各コンポーネントの clean を呼び出し、allBuild で各コンポーネントのビルドを実行しています。

Jetspeed2のポータルサーバー自身とすべてのコンポーネントを構築していくには、次のコマンドを実行します(すっきりビルドさせるために、allBuild する前に allClean を実行しておきます)。

$ maven initMavenPlugin allClean allBuild

initMavenPlugin で一度、Jetspeed2プラグインを Maven にインストールされれば、2回目以降は、allClean allBuild だけでも問題ありません。

マシンのスペックにもよりますが、ビルドには数分かかると思います。Maven を初めて実行する場合には、依存する多くの jar ファイルを Maven のリモートリポジトリからダウンロードするため、少し多く時間がかかるかもしれません。一度、Maven のローカルリポジトリに保存されると、次回以降の実行では、リモートリポジトリに取りに行くことはないので、安心してください(*- SNAPSHOT.jarはその対象から除かれているので、再度取得しにいきます)。あまりにダウンロードに時間がかかるような場合は、リモートリポジトリを用意して、build.properties に maven.repo.remote を設定して対応するのがよいでしょう。

現在では、デフォルトでテストをスキップするようになっています。その設定は、jetspeed-2 ディレクトリの project.properties 内で maven.test.skip プロパティで設定されています。もし、その値を false とした場合は、テスト用にデータベースを起動する必要があります(デフォルトでは、テストはスキップされるので起動する必要はありません)。HSQLを使用する場合は、allBuild ゴールの実行する前にHSQLを実行します。start.test.serverゴールを別の端末で実行してください。

$ maven j2:start.test.server

実行後、maven allClean allBuild の実行で、テストとビルドが実行されます。

TomcatへJetspeed2の配備

それでは、Jetspeed2 を配備していきましょう。Jetspeed2 は、Tomcat 5 または Tomcat 5.5 へ配備することができます。HSQL を使用しないなら、ステップ1は省略可能です。

1. HSQLを使用している場合は、次のゴールを実行して、HSQLを起動します。

$ maven j2:start.production.server
__  __
|  \/  |__ _Apache__ ___
| |\/| / _` \ V / -_) ' \  ~ intelligent projects ~
|_|  |_\__,_|\_/\___|_||_|  v. 1.0.2
build:start:
start.production.server:
[echo] ====================================
[echo]   Production/Deployment Database
[echo] ====================================
[java] server.properties not found, using command line or default properties
[java] Opening database: ./src/database/hsql/Production
[java] HSQLDB server 1.7.1 is running
[java] Use SHUTDOWN to close normally. Use [Ctrl]+[C] to abort abruptly
[java] Sat Jun 11 08:55:15 JST 2005 Listening for connections ...

2. (別のウィンドウまたは端末で)ビルドされたものを Tomcat に配備します。

$ cd
$ cd svn/jetspeed-2
$ maven j2:quickStart

quickStart ゴールの実行で、必要なデータベースが作成されます。今回の場合は、HSQL の src/database/hsql/Production に必要な情報が書き込まれます。

3. Tomcatを起動して、ブラウザで次のURLにアクセスします。

http://localhost:8080/jetspeed

Jetspeed2 の配備後、初めてアクセスする場合には、各ポートレットの配備が実行されます。ポートレットが配備されるまでは、ポートレットが表示されませんので、しばらくおいて(1分くらい)再度、アクセスしてください。

4. Jetspeed2にログインするためには、ユーザー名: admin, パスワード: admin を利用してください。

最新の Jetspeed2 をビルド・実行はできたでしょうか?開発中のものを Subersion のリポジトリより取得しているので、場合によっては、ビルドエラーなどにあうかもしれません。そのときには、Apache の Jetspeed のメーリングリストなどを確認してみてください。または、jetspeed@yahoogroups.jp に日本語で投げてもらってもかまいません(^^)

ページの要素

ページの要素

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 です。管理者でログインすることで、各種設定が行えます。