【问题标题】:Guice Deployment exceptionGuice 部署异常
【发布时间】:2017-04-25 11:07:27
【问题描述】:

在 Airpal 中使用 Guice for DI 框架,在我的项目中,我们使用 glassfish 4.1 payara 服务器 RESTful Web 服务,Jersey 版本 2.21。 问题 1:如果使用 Guice 遇到一些运行时异常

部署期间发生错误:加载应用程序时出现异常:CDI 部署失败:WELD-001409:在注入点 [UnbackedAnnotatedField] @Inject private org.hibernate.validator.internal.cdi 具有限定符 @Default 的类型验证器的不明确依赖项。 org.hibernate.validator.internal.cdi.interceptor.ValidationInterceptor.validator(ValidationInterceptor.java:0) 上的interceptor.ValidationInterceptor.validator 可能的依赖关系:- org.apache.bval.cdi.ValidatorBean@33aeb01,- ValidatorBean [id=org .hibernate.validator.internal.cdi.ValidatorBean_default] 。有关详细信息,请参阅 server.log。

issue2:如果不使用 Guice,如何在 jersey 2.21 RESTful 中绑定 airlift 客户端。

请帮助我。任何使用 Airpal+presto+glassfish4.1+jersey2.21+maven3.0 的人都知道这个问题

【问题讨论】:

    标签: presto glassfish-4.1.1


    【解决方案1】:

    看来由于Guice和标准Java EE CDI都使用了相同的@Inject注解,所以触发了CDI机制但是找不到依赖,因为你的应用配置了Guice。

    GlassFish/Payara 最简单的解决方案是在部署应用程序时禁用隐式 CDI(部署时管理控制台中有一个复选框,或 asadmin 命令的选项)。

    您也可以在 XML 描述符中禁用应用程序存档中的 CDI。查看有关 disabling CDI or filtering CDI scanning 的 Payara Server 文档。请注意,大多数选项仅在 Payara Server 中可用,在 GlassFish 4.1 中不可用。

    CDI 由以下任一方式触发 - 将beans.xml 放入您的应用程序(我不希望您将它放在那里,因为您使用的是 Guice,但请检查它是否不是由您的 IDE 出于某种原因生成的) - 使用触发 CDI 的注释来注释一个或多个类 - 例如任何 EJB 注释(@Stateless@Stateful、...)

    【讨论】:

      猜你喜欢
      • 2014-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-05
      • 2018-04-30
      • 2013-10-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多