2017-05-24 5 views
0

オリジナルのmojarra実装の既知のバグのために、JSF実装をWARファイルにバンドルする必要があります。JSF1051でWARのPayallでJSFをバンドルすると失敗するGlassFishInjectionProviderがDiscoverableInjectionProviderを拡張しない

モジュールのJSF実装を置き換えることが許可されていないため、useBundledJsfプロパティを使用しています。

Payaraバージョン:Payara Server 4.1.1.164 #badassfish(ビルド28) このバージョンでは、useBundledJsfが適切にサポートされている必要があります。

私のglassfish-web.xmlにこれを追加しました:

<class-loader delegate="false" /> 
    <property name="useBundledJsf" value="true" /> 

と私のポンポンにjavax.facesのdependecyを追加しました:

<dependency> 
    <groupId>org.glassfish</groupId> 
    <artifactId>javax.faces</artifactId> 
    <version>2.2.13</version> 
</dependency> 

私は次のエラーを取得し、すべての注射をしています失敗している。

SEVERE: JSF1051: Service entry 'org.glassfish.faces.integration.GlassFishInjectionProvider' does not extend DiscoverableInjectionProvider. Entry will be ignored. 

私は私のプロジェクトに溶接integration.jarを追加しようとしましたが、それはまだで、次のJSF1051エラーを生成します。

Unable to create a new instance of 'org.jboss.weld.jsf.ConversationAwareViewHandler' 

私が使用している溶接統合のための依存関係:

<dependency> 
<groupId>org.glassfish.main.web</groupId> 
<artifactId>weld-integration</artifactId> 
<version>4.1.2</version> 
<exclusions> 
    <exclusion> 
     <artifactId>*</artifactId> 
     <groupId>*</groupId> 
    </exclusion> 
</exclusions>  

答えて

0

ペーシュ・カショーロサーバ171 WHで、これは簡単にするために余分な機能がありますこれらのシナリオを適切に動作させるために特別に追加されました。ドキュメントから

これは、デプロイされたアプリケーションのためのクラスローディング代表団の極端な分離レベルを設定することが可能です。この極端な分離動作により、デプロイされたアプリケーションは、デプロイメント記述子で定義されたホワイトリストに登録されたパッケージに属するPayara Serverに含まれるライブラリからクラスのみをロードするように強制できます。

ホワイトリストパッケージを設定するには、glassfish-web.xml(WARアーティファクト)またはglassfish-application.xml(EARアーティファクト)の<whitelist-package>要素を使用できます。この要素は、複数のパッケージをホワイトリストにまとめるために複数回含めることができます。ここでWARアプリケーションをGoogleグアバ、ジャクソンパッケージの両方をホワイトリストの例です。

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd"> 
<glassfish-web-app error-url=""> 
    ... 
    <whitelist-package>com.google.guava</whitelist-package> 
    <whitelist-package>com.fasterxml.jackson</whitelist-package> 
</glassfish-web-app> 

ホワイトリスト構文は単純です:質問にクラスを含むパッケージの名前を定義します。たとえば、com.googleを書き込むと、サーバに含まれるすべてのGoogleライブラリがホワイトリストに追加されますが、com.google.guavaと書くと、Google Guavaライブラリのみがホワイトリストに追加されます。

Extreme Classloading Isolation

+0

ヒントのおかげで、しかし、私はここにホワイトリストに登録すべきかわかりません。フェイルレットで使用されるすべてのパッケージは、すでにホワイトリストに登録されています(デフォルトのホワイトリストクラス).com.sun、javaxおよびエラーメッセージorg.glassfishのパッケージ。それでもJSFを外部にロードしようとしていますが、エラーはまだあります。 – tak3shi

関連する問題