Apache Pluto による簡易ポータル開発(準備編)

ポータルっぽいサイトを作りたいので色々調査したところ、オープンソースものとしては LiferayJetspeed2 あたりが有力らしいことがわかったものの、両方ともかなり重量級であり中身を理解するのが相当大変そうなので、とりあえず 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>

また、同ファイルの 要素を修正し、「Pluto Admin」ページがデフォルトになるようにし、context 要素も現在のプロジェクトにあわせて portal-example に修正する。

  <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

とする。これで TomcatTOMCAT_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-users.xml

tommcat-users.xml では、 要素の中に以下の設定を追加しておく。

  <role rolename="pluto" />
  <user username="username" password="password" roles="pluto" />

Tomcatの設定

pluto-2.0.0-bundle.zip をダウンロードページ Pluto - Apache Pluto DownloadsPluto distribution mirror からダウンロードし、展開する。

TOMCAT_HOME の下に lib-pluto というフォルダを作成し、その中に、ダウンロードしたファイルを展開した中の lib フォルダに入っている

を入れておく。

テスト実行

これまでの作業がうまくいっているか確かめてみる。

  1. Eclipse で、一応プロジェクトのクリーン、サーバのクリーンを実行した後、サーバを起動してみる。まずはコンソールにエラーが出なければOK。
  2. その後、http://localhost:8080/portal-example/ にアクセスし、Plutoのログイン画面が出れば第二段階もOK。
  3. 最後に、先ほど tomcat-users.xml に設定したユーザ名・パスワードでログインでき、About と Admin のポートレットがきちんと表示されればすべてOK。

これで、Eclipse WTP から普通のWebアプリとしてポータルサイトを開発する準備ができた。