Apache Pluto による簡易ポータル開発(準備編)
ポータルっぽいサイトを作りたいので色々調査したところ、オープンソースものとしては Liferay と Jetspeed2 あたりが有力らしいことがわかったものの、両方ともかなり重量級であり中身を理解するのが相当大変そうなので、とりあえず Java Portlet Specification のリファレンス実装である Pluto のカスタマイズから始めてみることにする。
- Windows環境(わたしはWindows 7 64bit+JDK1.6.17 x86_64)
- zip版の Tomcat6 がインストールされていること(インストール先を TOMCAT_HOME とする)。
- Maven2 がインストールされていること。
- Eclipseとm2eclipseプラグインがインストールされていること。
という前提。
プロジェクトの準備
pluto-portal ソースコードの取得
カスタマイズ元になる Pluto 2.0.0 のポータルサイトのソースコードを以下のようにエクスポートする。
svn export https://svn.apache.org/repos/asf/portals/pluto/tags/pluto-2.0.0/pluto-portal/ portal-example
Eclipseプロジェクトの生成
portal-example/pom.xml の /project/build/plugins 要素の中に以下の設定を追加しておく。
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.1</version> <configuration> <encoding>UTF-8</encoding> <source>1.6</source> <target>1.6</target> </configuration> </plugin> <plugin> <artifactId>maven-eclipse-plugin</artifactId> <version>2.7</version> <configuration> <downloadSources>true</downloadSources> <downloadJavadocs>true</downloadJavadocs> <wtpversion>2.0</wtpversion> </configuration> </plugin>
また、同じ pom.xml ファイルで、/project/artifactId をいちおう変更しておく。
<project xmlns="..."> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.apache.portals.pluto</groupId> <artifactId>pluto</artifactId> <version>2.0.0</version> </parent> <!-- ここを変更 --> <artifactId>portal-example</artifactId>
追加したら、以下のコマンドでEclipse設定ファイルを生成する。
mvn eclipse:clean eclipse:eclipse
この後、Eclipse のメニュー「ファイル」>「インポート」>「既存プロジェクトをワークスペースへ」から portal-example フォルダを対象にプロジェクトのインポートを行う。
インポートしたら、プロジェクトエクスプローラでプロジェクトを右クリックし「Maven」>「依存関係管理を使用可能にする」を選択し m2eclipse を有効にする。
Eclipseからのデプロイ用修正
この portal-example のみで Eclipse からデプロイさせるための最低限の修正を行う。
まず src/main/resources/pluto-portal-driver-config.xml ファイルを src/main/webapp/WEB-INF/ の下に移動し、portal-version 要素の内容を固定値に書き換える。
<!-- <portal-version>${pom.version}</portal-version> --> <portal-version>2.0.0</portal-version>
また、同ファイルの
<render-config default="Pluto Admin"> <!-- <page name="About Apache Pluto" uri="/WEB-INF/themes/pluto-default-theme.jsp"> <portlet context="/pluto" name="AboutPortlet"/> <portlet context="/testsuite" name="TestPortlet1"/> </page> <page name="Test Page" uri="/WEB-INF/themes/pluto-default-theme.jsp"> <portlet context="/testsuite" name="TestPortlet1"/> <portlet context="/testsuite" name="TestPortlet2"/> </page> <page name="JSR 286 Tests" uri="/WEB-INF/themes/pluto-default-theme.jsp"> <portlet context="/testsuite" name="286TestPortlet"/> <portlet context="/testsuite" name="286TestCompanionPortlet"/> </page> --> <page name="Pluto Admin" uri="/WEB-INF/themes/pluto-default-theme.jsp"> <portlet context="/portal-example" name="PlutoPageAdmin"/> <portlet context="/portal-example" name="AboutPortlet"/> </page> </render-config>
pluto-portal-driver-config.xml を移動させてしまったので、pom.xml で一応 maven-war-plugin の設定をコメントアウトして無効にしておく。
<!-- <plugin> <artifactId>maven-war-plugin</artifactId> (中略) </plugin> -->
Eclipseのサーバ設定
Eclipseのメニュー「ファイル」>「新規」>「その他」から「サーバー」を選択し、新規サーバを作成する。
先ほど設定したTomcatに対してまだサーバを作成したことがない場合は、「サーバー・ランタイム環境」の横の「追加」から先ほど設定したTomcatを指定してサーバー・ランタイムを作成しておく。
「プロジェクトの追加および除去」画面で、先ほどインポートした「portal-example」プロジェクトを追加しておく。
サーバを追加すると「Servers」というプロジェクトの中に以下のように追加したサーバ設定が表示されるので、この中にあるファイルを修正していく。
catalina.properties
catalina.properties の中の common.loader というプロパティの末尾に
,${catalina.home}/lib-pluto/*.jar
を追加し、
common.loader=${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar,${catalina.home}/lib-pluto/*.jar
とする。これで Tomcat が TOMCAT_HOME/lib-pluto 以下に置いた jar も TOMCAT_HOME/lib と同じように読んでくれるようになる。
server.xml
server.xml の下のほうに portal-example プロジェクトの設定が↓こんな感じであるはずなので、
<Context docBase="portal-example" path="/portal-example" reloadable="true" source="org.eclipse.jst.j2ee.server:portal-example"/></Host>
crossContext, antiJARLocking, antiResourceLocking を一応追加しておく。
<Context docBase="portal-example" path="/portal-example" reloadable="true" source="org.eclipse.jst.j2ee.server:portal-example" crossContext="true" antiJARLocking="true" antiResourceLocking="true" /></Host>
Tomcatの設定
pluto-2.0.0-bundle.zip をダウンロードページ Pluto - Apache Pluto Downloads の Pluto distribution mirror からダウンロードし、展開する。
TOMCAT_HOME の下に lib-pluto というフォルダを作成し、その中に、ダウンロードしたファイルを展開した中の lib フォルダに入っている
- ccpp-1.0.jar
- pluto-container-api-2.0.0.jar
- pluto-container-driver-api-2.0.0.jar
- pluto-taglib-2.0.0.jar
- portlet-api_2.0_spec-1.0.jar
を入れておく。