2017-04-25 56 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,...)