2017-04-25 45 views
0

在Airpal中使用了Guice for DI框架,在我的项目中我们使用的是glassfish 4.1 payara服务器的RESTful Web服务,Jersey版本2.21。 问题1:如果使用的吉斯得到了一些运行时异常部署期间发生Guice部署例外

错误:异常而加载的应用程序:CDI部署失败:WELD-001409:与预选赛型验证暧昧的依赖关系@default于注射点[UnbackedAnnotatedField] // @在org.hibernate.validator.internal.cdi.interceptor.ValidationInterceptor.validator(ValidationInterceptor.java:0)中注入专用的org.hibernate.validator.internal.cdi.interceptor.ValidationInterceptor.validator可能的依赖关系: - org.apache.bval。 [email protected], - ValidatorBean [id = org.hibernate.validator.internal.cdi.ValidatorBean_default]。有关更多详细信息,请参阅server.log。

问题2:如果没有使用Guice如何绑定空运客户端2.21 RESTful。

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

回答

0

似乎既然Guice和标准的Java EE CDI使用相同的@Inject注释,CDI机制被触发但失败找到依赖关系,因为你的applcation配置了Guice。

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

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

的CDI被触发或者通过 - 把beans.xml到你的应用程序(我不希望你把它放在那里,因为你使用的吉斯,但是否它不是由你的IDE因为某些原因产生的) - 用触发CDI的注释注释一个或多个类 - 例如任何EJB注释(@Stateless,@Stateful,...)