2017-05-02 56 views
1

我們有一個在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相同?

+0

蜻蜓焊接(CDI參考實現)。儘管Websphere曾經使用另一種實現--OpenWebBeans(最新版本也使用Weld)。這兩者之間有許多已知的差異,你可能會碰到一些。我對OWB知之甚少,但也知道發生了什麼,請按原樣發佈您的部署結構。特別是如果我們正在談論EAR,或者共享庫等等,那些內容往往有所不同。 – Siliarus

回答

1

這很可能是您在Wildfly中使用了不同的CDI或EE規範級別。

您沒有指定任何版本,也沒有指定什麼類應該滿足該依賴性,也沒有指定存儲位置。但是,您可能需要包含類的jar包中的beans.xml以滿足該依賴性。

+0

我不認爲這是通常的「beans.xml」的「視覺效果」。它看起來是由Weld和OWB之間的差異造成的。如果它在一個AS上沒有beans.xml的情況下工作,它就必須在另一個AS上工作,就像規範說的那樣。 – Siliarus

+0

似乎對我來說似乎夠用了,因爲已知1個AS位於CDI 1.0上。 – covener

+1

事實上,即使我們使用JEE7,OWB仍然需要具有bean.xml。非常感謝你。 – Miguel