2

我正在将我们的 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 Validation 内容,也没有任何 hibernate jars

EAR Lib 也有一堆罐子——它不复制 CODi 的东西并省略 PF,它确实包括一些 spring 和 velocity 的东西、apache commons 和其他一些东西——再次没有 CODi 验证器的东西或 hibernate 的东西。

部署时我得到:

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 类型 [Validator] 的依赖关系不满足

&

CDI / Weld Unsatisfied dependencies proglem

两者都没有说明问题,因为两者都表明 CODI 验证器是问题的根源——但我的部署单元(或 EAR)中根本没有这个。

有没有办法解决这个问题?

切换到 DeltaSpike(和/或 OS890 codi DS 组合)不是一个直接的选择;也不用ee7。我需要尝试让它与尽可能少的代码更改一起工作。

有任何想法吗?

4

2 回答 2

0

我找到了以下解决方案:

在“myfaces-extcdi-jsf20-module-impl-1.0.5.jar”中完全删除包“org.apache.myfaces.extensions.cdi.jsf.impl.bv”。

没有什么完美的,但到目前为止对我有用......

于 2013-11-11T22:13:11.930 回答
0

他们刚刚在推特上说最新的 Snapshot 可以与 EE7 一起使用。我想没有人报告这个问题(至少直到今天我还没有看到 JIRA-ticket)。

于 2014-01-13T10:24:30.357 回答