【发布时间】:2013-10-15 21:34:19
【问题描述】:
我正在将我们的 JSF/Primefaces 3.5.x GF 3.1.1 应用程序迁移到 GF 4.0。它是一个带有战争的 EAR,一个 EJB-jar 和充满 jar 的库。
WAR 有 WEB-INF/lib 有:
'org.apache.myfaces.extensions.cdi.core:myfaces-extcdi-core-api:1.0.5',
'org.apache.myfaces.extensions.cdi.core:myfaces-extcdi-core-impl:1.0.5',
'org.apache.myfaces.extensions.cdi.modules:myfaces-extcdi-jsf20-module-api:1.0.5',
'org.apache.myfaces.extensions.cdi.modules:myfaces-extcdi-jsf20-module-impl:1.0.5',
除了 PF 的东西和 Omnifaces 以及其他一些依赖项(codi messages api & impl 也包括在内——必须是传递的 dep)。注意:WAR 中没有 CODi 验证内容,也没有任何休眠 jars。
EAR Lib 也有一堆罐子——它不会复制 CODi 的东西并省略 PF 它确实包括一些 spring 和 velocity 的东西、apache commons 和其他一些东西——再次没有 CODi 验证器东西或休眠的东西。
部署时我得到:
org.jboss.weld.exceptions.DeploymentException: WELD-001408 Unsatisfied dependencies for type [Validator] with qualifiers [@Default] at injection point [[UnbackedAnnotatedField] @Inject private org.hibernate.validator.internal.cdi.interceptor.ValidationInterceptor.validator]
我看过其他 2 篇与此相关的 SO 帖子:
WELD-001408 Unsatisfied dependencies for type [Validator]
&
CDI / Weld Unsatisfied dependencies proglem
两者都没有说明问题,因为两者都表明 CODI 验证器是问题的根源——但我的部署单元(或 EAR)中根本没有这个。
有没有办法解决这个问题?
切换到 DeltaSpike(和/或 OS890 codi DS 组合)不是一个直接的选择;也不用ee7。我需要尝试让它与尽可能少的代码更改一起工作。
有什么想法吗?
【问题讨论】:
-
我们使用os890.blogspot.com/2013/07/… 没有问题。在这种情况下,您不需要添加与 Bean-Validation 相关的任何可能冲突的内容。
-
好吧,只是简单地扫描一下 os890,它似乎确实可以工作。但是,如果我必须破解代码——那么我不妨切换并使用一些 JSF 2.2(现在只使用 JSF 2.0)的东西来代替 CODI 的东西(实际上只是 ViewAccessScope)。真的是想避免接触太多代码。
-
有了那个库,你只需要改变包名。
标签: jsf-2 deployment glassfish-4 codi