Jetspeed 2 は、Java Portlet Specification 1.0 (JSR-168) および 2.0 (JSR-286) に対応したポートレットコンテナ。
[2010-11-30 追記] しまった! 以下の手順はあんまり正しくないみたいだ! ここは俺が食い止める! お前はその間に公式サイトのチュートリアルに逃げるんだ!!
環境を構築する
- Eclipse IDE for Java EE Developers を入れる。今回は 3.6.1 (Helios SR1) を入れた。
- Pleiades を入れる。今回は 1.3.3 を入れた。
- Eclipse を起動して m2eclipse プラグインを入れる。今回は 0.12.0 を入れた。
- 更新サイト URL は http://m2eclipse.sonatype.org/sites/m2e
- もうひとつ、「WTP 用 Maven 統合」プラグインを入れる。今回は 0.11.0 を入れた (m2eclipse 本体とバージョンが合ってないけど大丈夫だろうか……?)。
- 更新サイト URL は http://m2eclipse.sonatype.org/sites/m2e-extras
- Apache Jetspeed 2 を入れる。GUI のインストーラで普通にインストールすると Tomcat も一緒に入る (バージョンはちょっと古め)。
- Eclipse の設定で、「サーバー」→「ランタイム環境」を開き、「Apache Tomcat v6.0」を選択。どこにインストールされているか聞かれるので、Jetspeed 2 のインストール先を指定する。
- Eclipse の「サーバー」ビューを開いて、Jetspeed 2 を追加する。
- 試しに Eclipse 上から起動してみる。ブラウザで http://localhost:8080 を開き、ポータルが表示されれば OK。
- 管理者アカウント (admin/admin) でログインしてみるのもいいね。
ポートレットを新規作成する
- 新規プロジェクトを作る。Maven Project を選択し、アーキタイプは以下を選択する。
- pom.xml を開いて必要な設定を追加する。とくに、使用する Java のバージョン (後述)。
- デフォルトのままだと J2SE5 になってしまっているため。
- pom.xml を上書き保存したら、プロジェクトを右クリックして「Maven」→「プロジェクト構成の更新」を選択する。
- プロジェクトにぶら下がっている「JRE システム・ライブラリー」の右端に、薄い字で「JavaSE-1.6」と出てれば OK。
- プロジェクトの設定で「Maven」を開いて、「アクティブ Maven プロファイル」のところに
jetspeed
と入れる。- これ以降、src/main/webapps/WEB-INF/web.xml じゃなくて src/main/jetspeed/web.xml が使われるようになる。
- src/main/webapps/WEB-INF/web.xml にあるのは Jetspeed 2 じゃなくて Pluto 用のやつなので、そのままだと Jetspeed 2 で動かせないため。「web.xml の場所を変えるなんて、後で修正するときに間違えそう><」という場合は、Maven の設定を変えるのではなくて src/main/jetspeed/web.xml を src/main/jetspeed/web.xml に上書きしても OK。
- src/main/jetspeed/web.xml を編集する。サーブレットがひとつ登録されているが、なぜか servlet 要素と servlet-mapping で名前が一致していないので、どっちかに合わせる (後述)。
- src/main/webapps/WEB-INF/portlet.xml を編集する。
- 「サーバー」ビューで先ほど登録したサーバを右クリックして「追加と除去」を選択し、上記で作成したプロジェクトを追加する。
- Jetspeed 2 を再起動する (←不要?)。
- ブラウザで Jetspeed 2 (http://localhost:8080) を開いて、適当なユーザでログインする。
- ページ右側の "Jetspeed Toolbox" で、ポートレットを検索し、ページに追加 (Add) してみる。
- "Put the portlet title here" というタイトルのポートレットがページに追加される。
pom.xml に行った修正
上記の手順で、pom.xml を修正した箇所がこちら。Java 1.6 を使いますよという設定を追加した。
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <configuration> <source>1.6</source> <target>1.6</target> </configuration> </plugin>
src/main/jetspeed/web.xml に行った修正
Jetspeed 2 の配備ツールを使うと、Jetspeed 2 で動かすために必要な設定を web.xml に追加してから配備してくれるらしい。Eclipse から直接起動する場合は配備ツールを使わないので、必要な設定をあらかじめ web.xml に足しておく。
- servlet-mapping の servlet-name に書かれていた
JetspeedContainer
をコピって、servlet 配下の servlet-name と display-name に貼り付けた。 - Maven で生成された内容と、公式サイトで配備ツールの説明ページに書いてある内容が微妙に違うので、公式サイトに合わせるために、contextName のところと load-on-startup の行を追加した。contextName の値には何を指定すればいいのかわからないので、とりあえず、portlet.xml の portlet-name 要素に書いてあるのと同じ値を指定した (今回の場合は hello-portlet-jetspeed2)。
<servlet> <servlet-name>JetspeedContainer</servlet-name> <display-name>JetspeedContainer</display-name> <description>Portlet for Jetspeed Fusion</description> <servlet-class>org.apache.jetspeed.container.JetspeedContainerServlet</servlet-class> <init-param> <param-name>contextName</param-name> <param-value>hello-portlet-jetspeed2</param-value> </init-param> <init-param> <param-name>registerAtInit</param-name> <param-value>1</param-value> </init-param> <init-param> <param-name>portletApplication</param-name> <param-value>hello-portlet-jetspeed2</param-value> </init-param> <load-on-startup>0</load-on-startup> </servlet> <servlet-mapping> <servlet-name>JetspeedContainer</servlet-name> <url-pattern>/container/*</url-pattern> </servlet-mapping>