Como usar corretamente o OmniFaces em um EAR
Eu quero usarOmniFaces 1.7 no meu aplicativo Jave EE 7. Meu aplicativo é um EAR que contém JARs e umWAR magro. Alguns dos meus JARs dependem do OmniFaces, portanto, o artefato do OmniFaces deve estar no EAR, mas não noWEB-INF/lib
na guerra.
Aqui está como meu EAR se parece:
EAR
+-- lib
| +-- [some 3rd party JARs]
| `-- omnifaces.jar
+-- myEJBs.jar
`-- myWAR.war
Quando eu coloco dessa maneira, os conversores OmniFaces (comoGenericEnumConverter
) não estão registrados no JSF e não funcionarão. A razão para isso é discutidaaqui eaqui. Basicamente de acordo com oEspecificação JSF 2.0 (seção11.5.1 Requisitos para a varredura de classes para anotações), apenas os WARsWEB-INF/lib
O diretório é verificado.
Então, minha pergunta é:como devo incluir o OmniFaces no meu aplicativo?
Incluindo duas vezes (emEAR/lib
e WARsWEB-INF/lib
) poderia funcionar, mas parece desajeitado. Eu tentei há algum tempo atrás com o RichFaces 4.3.5 (mesmo problema) que não funcionou, mas levou aIllegalArgumentException: duplicate key: class javax.faces.convert.ByteConverter
.