0

私のアプリケーション サーバーは Glassfish 3.1.1 で、Mojarra 2.0.3 FCS を使用しています (私の知る限り)。アプリケーションで JSF 2.1.2 を使用したいと考えています。Maven ビルドで使用する正しいアーティファクトを既に見つけました。

ここで、Glassfish libvrary クラスローダー (JSF 2.0.3 をロードし、omnifaces/richfaces 追加コンポーネントに対して ClassNotFoundException を生成する) への「古典的な」委譲に従う代わりに、JSF クラスがこの成果物から確実にロードされるようにするにはどうすればよいでしょうか?

4

1 に答える 1

2

一般に、アーカイブから特定のJava EEアーティファクトをオーバーライドする方法は、アプリケーションサーバーによって異なります。GlassFishの場合、私が間違っていなければ、WEB-INF/glassfish-web.xmlで次を使用できます。

<glassfish-web-app error-url="">
    <class-loader delegate="false" />
    <property name="useBundledJsf" value="true" />
</glassfish-web-app>

また、 [glassfish home] / glassfish/modulesのjarファイルを交換することもできます。これはまさにJSFビルドスクリプトが行うことなので、動作することが保証されているはずです。

2.0.3から現在のバージョンに移行すると、2つのjarから1つのjarに変更されたことがわかります。したがって、その場合、[glassfishhome]/glassfish/domains/domain1/config/default-web.xmlおよび[glassfishhome]/glassfish/lib/templates/default-web.xmlで、エントリjsf-api.jarおよびjsfを削除します。 -impl.jarを作成し、それらを単一のjavax.faces.jarに置き換えます。

おそらく、さらに簡単な代替手段は、GlassFishの最新バージョン(3.1.2.2)をダウンロードすることです。

于 2013-01-02T11:33:13.037 に答える