2012-12-20 36 views
4

使用JSF 2.x mojarra實現(2.0和2.1測試)的Java EE 6項目會話Bean通過@EJB註釋注入到JSF受管Bean失敗在WebSphere Application Server 8.5,而它的功能在Glassfish 3.X(在GF 3.0 & 3.1分別測試),因爲它是:將無狀態EJB注入JSFmanaged bean導致WAS 8.5中的NullPointer ex

的編碼方法是象下面這樣:

SomeEJBFacade.java

@Stateless 
public class SomeEJBFacade() { 

    public String testMethod() { 
     return "testing 1 2 3"; 
    } 

} 

testBean這個

@ManagedBean 
@ViewScoped 
public class TestBean implements java.io.Serializable { 
    @EJB SomeEJBFacade facade; 

    public String getTestStr() { 
     return facade.testMethod(); 
    } 
} 

JSF的facelet片段:

<h:outputText value="#{testBean.testStr}" /> 

上述引起空指針異常從testBean這個的testStr()方法。

同樣,任何JPA事務方法都會在 類似點上拋出空指針異常。

+2

這看起來像它應該工作。您可能找到了產品缺陷,因此我建議您與IBM開一個PMR。 –

回答

0

問題是GlassFish和WebSpheres類加載器的工作方式不同。你必須對EJB MODUL添加爲依賴關係在Web項目META-INF/MANIFEST.MF:

Class-Path: EnappDaemonEJB.jar 

凡爲「EnappDaemonEJB.jar」是生成的JAR的名字/ EJB人工製品 - 或其他字,我的EJB項目的名字是'EnappDaemonEJB'。

鏈接:WebSphere Infocenter - see Procedure point 2

+0

Websphere專家告訴我,WAS不支持Mojarra推理中的依賴注入,並且在WAS中爲DI實施了Apache MyFaces。 – fledglingCoder

+0

嗯(at)EJB是JEE CDI標準,(at)ManagedBean是JSF ...但實際上mojarra會覆蓋注入引擎:https://www.java.net//node/701374。在Mojarra 2.0.3上試用它並在WAS 8.5.0.2上注入既不能與(在)EJB也不能與(在)注入...因此我的回答是錯誤的!對不起... – swarley

+0

在WAS上使用Mojarra 2.x的情況下,它不能與@Named帶註釋的控制器bean一起使用。 – fledglingCoder

相關問題