我想在我的 Jave 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 Spec(第11.5.1 节对扫描类注解的要求),只扫描 WARsWEB-INF/lib
目录。
所以我的问题是:我应该如何在我的应用程序中包含 OmniFaces?
包括它两次(在EAR/lib
和 WARs 中WEB-INF/lib
)可能会起作用,但感觉很笨拙。我前段时间用 RichFaces 4.3.5 (同样的问题)试过了,它没有用,但导致IllegalArgumentException: duplicate key: class javax.faces.convert.ByteConverter
.