アイデアが詰まっていると思います。liferay ポートレットを weblogic から WAS 8 に移動しようとしています。weblogic では、コンポーネント ライブラリとして JSF 2.0 と primefaces の mojorra 実装を使用しています。WAS にプライムフェイスをインストールしましたが、ポートレットを移動しようとすると、問題が発生し始めました。
最初の問題は、WAS が常に myfaces を JSF 実装として使用しようとしていることです。これは、myfaces が例外をスローするためです。
原因: java.lang.IllegalArgumentException: factoryName'javax.faces.view.facelets.FaceletCacheFactory' at javax.faces.FactoryFinder.checkFactoryName(FactoryFinder.java:383)
maven pom.xml ファイルに次の依存関係があります。
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>2.1.2</version>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>2.1.2</version>
</dependency>
また、WAS アプリケーションでは、最初にクラスをロードするようにクラス ローダーを設定しました。しかし、これは役に立ちませんでした。確かに、サーバー用に新しいクラスローダーを構成しましたが、状況が再び繰り返されます。私が持っている最後のアイデアは、mojarra jarを共有ライブラリとして定義することですが、ClassFormatExceptionが発生しました(調査する時間がありません)。
何か案は?
Mojorra クラスを WAR に追加し、クラスローダーを変更した後、例外が発生しました。
[7/17/12 18:52:25:072 CEST] 0000002c config E 展開中の重大なエラー: com.sun.faces.config.ConfigurationException: CONFIGURATION FAILED! factoryName 'javax.faces.view.facelets.FaceletCacheFactory' at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:375) at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:225) com.ibm.ws.webcontainer.webapp.WebApp.notifyServletContextCreated(WebApp.java:1649) で com.ibm.ws.webcontainer.webapp.WebAppImpl.initialize(WebAppImpl.java:410) で
例外を追跡したところ、myfaces 実装の factoryfinder のみが、既に存在するもの (jsf-api、jsf-impl) のほかに、プロジェクトに他の依存関係を追加する必要があることがわかりました。
jsfライブラリを共有ライブラリとして指定し、それらを私の戦争への参照として指定した後-初期化はエラーなしで成功しました-他の問題は、liferayが例外をスローしていることです:
01:21:16,956 エラー [LiferayFacesContext:61] インスタンスが初期化されていません -- 呼び出し元が静的である可能性があります(LiferayLocalePhaseListener.java:67)
おそらく、liferay ライブラリも共有として定義する必要があるためです。数秒で試してみます。
そして、次の例外は次のとおりです。
原因: com.liferay.faces.bridge.renderkit.html_basic.HeadRendererBridgeImpl.encodeBegin での java.lang.NullPointerException (HeadRendererBridgeImpl.java:133)
この 2 つの例外が互いに関連しているかどうかはわかりませんが、その結果、ポートレットが機能しなくなります :(