JBoss Portal用ポートレットの開発チップ

  • log4j-*.jar を含めてはならない。

以下のような Exception をくらいます。

12:52:44,571 ERROR [STDERR] log4j:ERROR A "org.jboss.logging.util.OnlyOnceErrorHandler" object is not assignable to a "org.apache.log4j.spi.ErrorHandler" variable.
12:52:44,571 ERROR [STDERR] log4j:ERROR The class "org.apache.log4j.spi.ErrorHandler" was loaded by
12:52:44,571 ERROR [STDERR] log4j:ERROR [WebappClassLoader
delegate: false
repositories:
/WEB-INF/classes/
----------> Parent Classloader:
java.net.FactoryURLClassLoader@43f9c9e3
] whereas object of type
12:52:44,572 ERROR [STDERR] log4j:ERROR "org.jboss.logging.util.OnlyOnceErrorHandler" was loaded by [org.jboss.system.server.NoAnnotationURLClassLoader@13aaa14a].
12:52:44,634 ERROR [STDERR] log4j:ERROR Could not create an Appender. Reported error follows.
12:52:44,634 ERROR [STDERR] java.lang.ClassCastException: org.jboss.logging.appender.DailyRollingFileAppender
12:52:44,635 ERROR [STDERR]     at org.apache.log4j.xml.DOMConfigurator.parseAppender(DOMConfigurator.java:175)

Liferay用ポートレットの開発チップ

  • portlet.xml の portlet-class タグ内にスペースを入れない

たとえば、

<portlet-class>org.apache.portals.bridges.portletfilter.FilterPortlet</portlet-class>

と言う感じで、無駄なスペースを入れない。スペースがあると、それもクラス名の一部として処理される。

(補足:どうやら、portlet-classタグ以外のところも文字列として扱いたいところにスペースが前後とかにあると、それも文字列の一部として処理されるので、余計なものは入れない方が良いと思われる)

Liferayを試す

まず、LiferayにVFSポートレットを配備して、動作確認を試みる。でも、動かない・・・。ログを見てみると、ガツガツエラーをはいている。そもそも、bin ディレクトリで実行しなければならなかったり、なんだか怪しい。VFSポートレットもportlet.xmlの解釈の仕方が違うらしく、そこいらのスペースとかもそのまま認識しているようにも思える。というわけで、苦戦中・・・。でも、おもしろそうなポートレットは入っているな。PAL Portal にももってこれないだろうか・・・。