我們有一個在JSF中開發的應用程序,我們將它轉換爲使用CDI。在這個過程中,我們在Wildfly中進行了測試,並且能夠像轉換之前一樣運行它。 我們在Websphere上部署它時出現問題!Websphere上的javax.enterprise.inject.UnsatisfiedResolutionException
我們的應用程序有兩個部分,爲了簡化第1部分和第2部分,其中第1部分中所產生的罐子被包含在第2部分,這意味着部署在WebSphere WAR文件已經包含部分jar文件1.
現在,當應用程序在WebSphere啓動拋出以下錯誤
[4/28/17 16:35:54:107 CEST] 00000083 BeansDeployer E BeansDeployer deploy
javax.enterprise.inject.UnsatisfiedResolutionException: Api type [web.frmwrk.mgbean.WebSession] is not found with the qualifiers
Qualifiers: [@javax.enterprise.inject.Default()]
for injection into
Field Injection Point, field : protected web.frmwrk.mgbean.WebSession web.frmwrk.FacesBean.ws, Bean Owner : [-2102135427,Name:dealerLink,WebBeans Type:MANAGED,API Types:[web.mgbean.dealer.Link,web.frmwrk.FacesBean,java.lang.Object,java.io.Serializable],Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any,javax.inject.Named]]
InjectionType : [class web.frmwrk.mgbean.WebSession]
Annotated : [Annotated Field,Base Type : class web.frmwrk.mgbean.WebSession,Type Closures : [class web.frmwrk.mgbean.WebSession, class web.frmwrk.FacesBean, class java.lang.Object, interface java.io.Serializable],Annotations : [@javax.inject.Inject()],Java Member Name : ws]
Qualifiers : [[@javax.enterprise.inject.Default()]]
at org.apache.webbeans.util.InjectionExceptionUtils.throwUnsatisfiedResolutionException(InjectionExceptionUtils.java:92)
我們已經尋找可能的解決辦法,但至今沒有運氣。在我們的搜索過程中,我們發現了這個page。我們在MANIFEST.MF中添加了一個Class-Path,提到了第1部分,但沒有任何改變。
你們有沒有遇到類似的問題?我們可能需要在Websphere上進行特殊配置才能使這項工作與Wildfly相同?
蜻蜓焊接(CDI參考實現)。儘管Websphere曾經使用另一種實現--OpenWebBeans(最新版本也使用Weld)。這兩者之間有許多已知的差異,你可能會碰到一些。我對OWB知之甚少,但也知道發生了什麼,請按原樣發佈您的部署結構。特別是如果我們正在談論EAR,或者共享庫等等,那些內容往往有所不同。 – Siliarus