Java EE 7 アプリケーションでOmniFaces 1.7を使用したいと考えています。私のアプリケーションは、JAR とスキニー WARを含む EAR です。一部の JAR は OmniFaces に依存しているため、OmniFaces アーティファクトは EAR にある必要がありますがWEB-INF/lib
、WAR にはありません。
私のEARは次のようになります。
EAR
+-- lib
| +-- [some 3rd party JARs]
| `-- omnifaces.jar
+-- myEJBs.jar
`-- myWAR.war
このように説明すると、OmniFaces コンバーター ( などGenericEnumConverter
) は JSF に登録されておらず、機能しません。この理由については、こちらとこちらで説明しています。基本的に、JSF 2.0 仕様(セクション11.5.1 アノテーション用のクラスのスキャンに関する要件) に従って、WARsWEB-INF/lib
ディレクトリのみがスキャンされます。
私の質問は次のとおりです。アプリケーションに OmniFaces をどのように含める必要がありますか?
それを 2 回 (EAR/lib
および WARsにWEB-INF/lib
) 含めるとうまくいく可能性がありますが、ぎこちなく感じます。少し前にRichFaces 4.3.5(同じ問題)で試してみましたが、うまくいきませんでしたがIllegalArgumentException: duplicate key: class javax.faces.convert.ByteConverter
.