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.