XMLサーバ/Cocoon自由自在!
第1回 Cocoonをセットアップしよう

Cocoonのデフォルト画面を表示する

 次はCocoonのインストールです。こちらもダウンロードから始めます。

(1)アーカイブのダウンロード

 Cocoonのアーカイブは、「Cocoon」(http://xml.apache.org/cocoon/)から取得することができます。ここからリンクをたどって、バイナリディストリビューションのページに進んでください。

 2001年8月現在、最新のバージョンは1.8.2ですが、連載ではTomcatと組み合わせる関係上、1.7.4を用います。こちらもtarとzipの2種類のアーカイブが用意されていますので、環境に合わせて都合のよい方をダウンロードしてください。

(2)アーカイブの展開

 Tomcatと同じく適当なディレクトリにアーカイブを展開します。ここではTomcatの場合と同様に、Windows環境を前提としてC:\Cocoonにインストールすることにします。

(3)Webアプリケーションの準備

 展開したアーカイブの中には、Cocoonのサーブレットが格納されているcocoon.jarや、サンプルが多数含まれています。ここに含まれているCocoonサーブレットを既存のWebアプリケーションにインストールする場合、その大体の手順は以下のようになります。

  (a) cocoon.jarなどのjarファイルをCLASSPATHに含める
  (b) 該当アプリケーションのweb.xmlにサーブレット設定を追加する

 ここでは、Cocoonのサンプルディレクトリを新しいWebアプリケーションとして登録し、そのアプリケーション上でCocoonが動くように設定してみます。

 まず、Cocoonをインストールしたディレクトリにsamplesというサブディレクトリがあることを確認してください。これを新しいWebアプリケーションとしてTomcatに登録します。

 登録する前に少し準備が必要です。まず、samplesディレクトリにWEB-INFというサブディレクトリを作成してください。そしてそのWEB-INFディレクトリの中に下記のような内容のテキストファイルを作成し、そのファイル名をweb.xmlとします。

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
"http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">

<web-app>
</web-app>
web.xmlを作成する

 このweb.xmlは、Webアプリケーションの設定ファイルです。後でここにCocoonのサーブレット設定を書き加えることになりますが、取りあえずこれで、WebアプリケーションをTomcatに登録する準備は完了です。

(4)Webアプリケーションの準備

 Tomcatをインストールしたディレクトリの下にconfというサブディレクトリがあることを確認してください。このディレクトリにserver.xmlというTomcatの設定ファイルが置かれています。このファイルにWebアプリケーションの情報を追加します。server.xmlをエディタなどで開き、ファイルの比較的最後の方にある下記のような記述を見つけてください。

<Context path="/examples"
  docBase="webapps/examples"
  crossContext="false"
  debug="0"
  reloadable="true" >
</Context>
デフォルトのWebアプリケーションの定義

 これはTomcatに添付されているデフォルトのWebアプリケーションの登録情報です。この直後に下記のような登録情報を付け加えてください。

<Context path="/cocoon"
  docBase="Cocoonをインストールしたディレクトリへのパス/samples"
  crossContext="false"
  debug="0"
  reloadable="true" >
</Context>
CocoonのsamplesをWebアプリケーションとして登録

 ここではCocoonをC:\Cocoonにインストールしていますので、docBaseの値は“C:/Cocoon/samples”になります。Windows環境でのパスの区切りは“\”ですが、この設定ファイルでは“/”を用いることに注意してください。

(5)Cocoonのインストール

 アプリケーションの登録が終わったので、Cocoonのサーブレットをアプリケーションにインストールしてみます。Cocoonをインストールしたディレクトリの下に、libというサブディレクトリがあることを確認してください。このlibというサブディレクトリを先ほど作成したWEB-INFディレクトリの下にまるまるコピーします(移動でも構いません)。

 次にCocoonをインストールしたディレクトリの下に、confというサブディレクトリがあることを確認してください。このconfというサブディレクトリの下にあるcocoon.propertiesというファイルを、これまたWEB-INFの下にコピーします。

 コピーしたらweb.xmlを下記のように書き換えてください。

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
"http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">


<web-app>

  <servlet>
    <servlet-name>
      cocoon
    </servlet-name>
    <servlet-class>
      org.apache.cocoon.Cocoon
    </servlet-class>
    <init-param>
      <param-name>properties</param-name>
      <param-value>/WEB-INF/cocoon.properties</param-value>
    </init-param>
  </servlet>


  <servlet-mapping>
    <servlet-name>
      cocoon
    </servlet-name>
    <url-pattern>
      *.xml
    </url-pattern>
  </servlet-mapping>


</web-app>
Cocoonサーブレットを登録

 この連載はJavaサーブレットに関するものではないので、web.xmlの細かい文法に立ち入った解説はしませんが、簡単に解説しておきます。

 <servlet>タグにより、Cocoonサーブレットを“cocoon”という名前で登録しています。そして、<servlet-mapping>タグにより、拡張がxmlのURLを、登録した“cocoon”という名のサーブレット、すなわちCocoonサーブレットで処理するように設定しています。

(6)出力エンコーディングの設定

 以上でCocoonのインストールは完了したわけですが、実は残念なことに、このままでは日本語の出力ができません。先ほど、WEB-INFの下にコピーしたcocoon.propertiesに、以下の設定を追加してみてください。

formatter.text/html.encoding = Shift_JIS
formatter.text/xhtml.encoding = Shift_JIS
formatter.text/html/loose.encoding = Shift_JIS
formatter.text/xhtml/loose.encoding = Shift_JIS
日本語を出力するための設定

 これらの設定項目は上から順に、Cocoonの出力フォーマットがHTML Strict、XHTML Strict、HTML TransitionalおよびXHTML Transitionalの場合に用いられるエンコーディングを指定しています。

 ここではShift_JISを指定していますが、必要に応じてUTF-8やEUC-JPなどに設定して構いません。

(7)動作確認

 それでは動作確認をしてみましょう。Tomcatを再起動して、Webブラウザで以下のURLをオープンしてください。

http://localhost:8080/cocoon/index.xml

 インストールが完了していれば、下記のような画面3を確認できるはずです。

■画面3 Cocoonのデフォルトページ

 ここで表示させているファイルのURL自体はindex.xmlですが、ブラウザにはXHTMLとして送信されていることを確認してみましょう。ソースを表示させてみてください。XMLのファイルではなく、通常のXHTMLのファイルとして表示されるはずです。

まとめ

 連載第1回にあたる今回は、TomcatおよびCocoonのセットアップを行い、添付されているサンプルの動作確認を行いました。次回からいよいよ、Cocoonの機能を実際に使っていく予定です。お楽しみに!

■コラム 〜 NoSuchMethodError
 Cocoonをインストールしたはいいが、なぜかNoSuchMethodErrorが出てしまう……そんなトラブルに悩まされている方は多いのではないでしょうか? これが出る原因はいくつか考えられるのですが、xerces.jarのバージョン不整合に起因する場合が多いようです。

 特にTomcatの場合が顕著です。リリース版の3.2.3をCocoonの最新版と組み合わせようとするとこのトラブルに遭遇することになります。

 この問題はCocoonの開発者たちも認識しているらしく、FAQの1つとして登録されています。FAQで提示されている解決策は、CLASSPATHの設定を修正し、Tomcat添付のjaxp.jarよりもCocoon添付のxerces.jarが先に読み込まれるように設定する、というものです。

 あまりエレガントな解決策ではありませんが、悩まれている方はお試しください。あとは、本連載のように1.7.4を用いるというのも1つの手です。

月1回掲載、次回は9月末頃掲載予定です。


Index
XMLサーバ/Cocoon自由自在!
第1回 Cocoonをセットアップしよう
  CocoonでXMLパブリッシング
  Javaサーブレットエンジン:Tomcatのインストール
Cocoonのデフォルト画面を表示する

「XMLサーバ/Cocoon自由自在!」


XML & SOA フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

HTML5+UX 記事ランキング

本日月間