« Java アプリケーションで MacOSのアプリケーションメニュー操作、のメモ | メイン | 侍2.0 »

2005年12月31日

Apache Lenya インストールメモ

とかわらじのドキュメントに、多言語が使えて無償のCMS(Content Management System)がないものかと思っていたらよさそうなのがあった。
・Apache Lenya
http://lenya.apache.org/

Cocoon ベースのCMSで、サーブレットコンテナ上ならなんでも動くはず。
じゃぁ WebLogic にデプロイしてみよう。今回使ったのは WLS8.1SP4。
バイナリをダウンロードして展開したら lenya.war が出てきたので、とりあえずデプロイ・・・したら
----
Unable to use getRealPath to locate /WEB-INF
java.lang.NullPointerException
----
との例外。getRealPath 関連 null ってことは展開ディレクトリ形式でデプロイしないといけないっぽいので展開してデプロイ・・・したらTransformationを取得できないとかの例外。今度はXMLパーサの問題っぽい。
たぶん WebLogic 内蔵のパーサと WEB-INF/lib に配置されているパーサが衝突しているのだろうということで、WEB-INF のクラスを優先してロードするように weblogic.xml に設定。
------weblogic.xml
<!DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 8.1//EN" "http://www.bea.com/servers/wls810/dtd/weblogic810-web-jar.dtd">
<weblogic-web-app>
<container-descriptor>
<prefer-web-inf-classes>true</prefer-web-inf-classes>
</container-descriptor>
</weblogic-web-app>
-----
よし、うまく動いたぞ。
lenya_installed.jpg

なんか最初は英語とドイツ語のコンテンツしか作れない。メニューから新しい言語セットを作るような仕組みは見あたらない。FAQにデフォルトの言語を設定するにはどうしたら良いか?という項目があり、publication.xconf というファイルをいじれば良いことが分かった。
How do I switch the default language for an existing publication?
http://lenya.apache.org/1_2_x/how-to/faq.html
英語がデフォルト、日本語のコンテンツも作成ならばこんな感じ。
----
<languages>
<language default="true">en</language>
<language>ja</language>
</languages>
----

さて、ドキュメントを公開するには編集した後に、パブリッシュ->承認を経なければいけない。wikiと違ってCMSはそうそうカジュアルにドキュメントを公開することを想定していないので、当然といえば当然。
デフォルトでは lenya という編集者と、alice という承認者がいる。
2人を使いこなすのは面倒なので、両方のグループに属した人を作れば良いらしいのだけど、ユーザを編集する画面で ClassCastException が・・・。
どうやらそれっぽいところ探し出してきてダウンロード。もうちょっと新しめの 1.6R2 があったのでそっちを使ってみた。
rhino.jar というのは含まれていなくて、js.jar ってのがある。はて、中身は lenya に含まれている rhino1.5r4-continuations-20040629T1232.jar と同じものなのだろうか?
こんなときはわらじでチェック。かなり多くのクラスが衝突しているので間違いなさそう。
waraji.jpg
とういわけで、rhino1.5r4-continuations-20040629T1232.jar を外して、js.jar をあとでわかるようにrhino1_6R2.jarという名前に変えて、WEB-INF/lib へ配置->再デプロイ。
・・したら NoSuchFieldError だ。バージョンがいけなかったか。
-----
<2005/12/31 3時16分57秒 JST> <[ServletContext(id=13726349,name=lenya,context-path=/lenya)] ServletException の根本的原因。
java.lang.NoSuchFieldError: instance
-----
再度 1.6R1 をダウンロードしたら無事所属グループの設定画面を表示することができた。
lenya_group.jpg
面倒くさくて危うく挫折するとこだった・・・。面倒なのは WebLogic にインストールしたからなのか、lenya がまだまだ枯れていないからなのかはよくわからない。Tomcat とかバンドルされているJetty で検証するのも面倒なので放っておこう。とりあえず動いたっぽいし。

まとめ
・lenya は展開ディレクトリ形式でデプロイ
・WEB-INFクラスを優先に設定(weblogic.xml)
・付属の rhino1.5r4-continuations-20040629T1232.jar ではだめ、Rhino1.6R2もだめ、Rhino1.6R1を使え

投稿者 yusuke : 2005年12月31日 02:24

トラックバック

このエントリーのトラックバックURL:
http://yusuke.homeip.net/diary/mt/mt-tb.cgi/326

コメント