MyFacesブリッジ その2

いや、まだ、方法があるな。今まで、ポートレット的な立場から、あれこれしようとしていたけど、JSF 的な立場で考えると、新しいライフサイクルを作って、レンダーのところでResponseWriterを差し替えて、そこに一時的にはき出したあとで、AddResourceから先に出力すべきものを出してしまって、そのあとに差し替えたResponseWriterからはき出せばいけるかもしれない。この方法がうまくいくなら、各ポータル用に用意する必要もないと思われる。あとで、試してみるかな・・・。

MyFacesブリッジ

うーん、Liferayで試したら、ポートレットの段階で対象のクラスローダーがとれないらしく、com.liferay.portlet.RenderResponseImplがとれない・・・。これは、手のつけようがない気が・・・。となると、やっぱり、すべてのポータルをサポートするためには、コンポーネントを作るしかないのか・・・。うむむ、せっかくここまでやったのに、この結論になり、ちょっとショック・・・。まぁ、LiferayとJBoss Portalの使い方が何となくわかったから、よしとしておくか・・・。

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)