【问题标题】:WELD-001408 & ValidationInterceptor & Glassfish 4.0x & EAR & CODi can not deploy?WELD-001408 & ValidationInterceptor & Glassfish 4.0x & EAR & CODi 无法部署?
【发布时间】: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


【解决方案1】:

我找到了以下解决方案:

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

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

【讨论】:

  • 回到这个话题……你的 cdiext/codi jar 是否在 EAR/lib 或 WAR/WEB_INF/lib 中?
  • 我在war/WEB-INF/lib中有它
  • 所以在我的情况下,如果我在 WEB-INF/lib 中有它,我会遇到与一些与 codi 相关的安全验证器或拦截器相关的 CNF 样式问题。虽然 WEB-INF/lib 中明确的 codi jar 可能不是它需要的东西?无论如何,将它们移动到包含 EAR 的 lib 目录,我终于得到了部署;但是,应用程序严重崩溃...还有更多工作要做...
【解决方案2】:

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

【讨论】:

  • 嗯...这仍然在我的雷达上;尽管我先迈出了一小步,先进入了 gf 3.1.2.2。你能放一个指向 JIRA 的链接或指向推文或快照的链接或其他东西吗——我非常随意的谷歌搜索没有找到任何东西。和/或如果我理解正确,您的意思是 CODI 进行了快速修复以使其能够在 EE7/GF4 上运行?
  • twitter.com/MyFacesTeam/status/422672426715975680issues.apache.org/jira/browse/EXTCDI-313 我不知道他们什么时候会发布它,但我会抓住机会快速测试它,如果仍然存在问题,我会向他们提供反馈。
  • 谢谢!我不推特,也看不到如何搜索推文——我隐约记得一些关于推特摆脱匿名浏览和搜索推文的新闻。无论如何,我在他们的 SVN 网站上搞砸了,开始看到一些关于 EE7 支持的 cmets。我一定会尝试的!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-04-15
  • 2014-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多