首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在EAR中正确使用OmniFaces

如何在EAR中正确使用OmniFaces
EN

Stack Overflow用户
提问于 2014-02-26 15:51:21
回答 1查看 1.3K关注 0票数 3

我想在我的Jave 7应用程序中使用OmniFaces 1.7。我的应用程序是一个包含EAR和瘦弱的战争的EAR。我的一些WAR依赖于OmniFaces,所以OmniFaces工件必须在耳朵中,而不是在WAR中的WEB-INF/lib中。

我的耳朵是这样的:

代码语言:javascript
复制
EAR
 +-- lib
 |    +-- [some 3rd party JARs]
 |    `-- omnifaces.jar
 +-- myEJBs.jar
 `-- myWAR.war

当我这样说时,OmniFaces转换器(如GenericEnumConverter)没有在JSF中注册,也无法工作。讨论了这里这里的原因。基本上,根据JSF2.0规范 ( 11.5.1节要求扫描注释类),只扫描WAR WEB-INF/lib目录。

所以我的问题是:我应该如何在我的应用程序中包括OmniFaces

将其包括两次(在EAR/lib和WARs WEB-INF/lib中)可能会奏效,但感觉很笨拙。不久前,我尝试了RichFaces 4.3.5 (同样的问题),它没有工作,但导致了IllegalArgumentException: duplicate key: class javax.faces.convert.ByteConverter

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-06 08:27:44

OmniFaces是一个JSF实用程序库,它依赖于JSF、EL和Servlet,通常只能在WAR中使用,而不是EAR。更重要的是,EJB(一般业务服务)不应该依赖于特定的前端API,如JSF、EL和Servlet。这将使它们在其他前端(如JAX、Spring等)上不可重用。

您需要将JSF实用程序和组件库(如OmniFaces和PrimeFaces )放在WAR中,而不是在EAR中。另请参阅安装主页的OmniFaces部分:

OmniFaces被设计为一个WAR库(web片段库),因此不能在WAR自己的/WEB-INF/lib之外的web应用的运行时类路径中放置其他地方,例如EAR的/lib,甚至服务器的/lib或JRE自己的/lib。当OmniFaces JAR文件以这种方式放错位置时,webapp将无法找到由OmniFaces捆绑的JSF/CDI注释类,并在部署或运行时抛出与此相关的异常。要解决这个问题,请将OmniFaces放回WAR的/WEB-INF/lib中。

另请参阅:

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22046464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档