2013-12-16 85 views
1

可以將無狀態會話bean注入到jsf託管bean中嗎?注入無狀態到ManagedBean

@ManagedBean(name = "imageUpload") 
@RequestScoped 
public class ImageUploadBean extends FileUploadBean { 

    @EJB 
    GenericEntityService genericEntityService; 

    ... 
} 


public interface GenericEntityService { 

    <T> T getById(int id, Class<T> entityClass); 

    void deleteById(int id, Class entityClass); 
} 


@Stateless 
public class GenericEntityServiceImpl 
     extends EntityServiceBase implements GenericEntityService 
{ 
... 
} 

genericEntityService總是空的,我不知道爲什麼

我使用tomee-webprofile-1.5.2

任何幫助或鏈接,例如,將不勝感激

+0

你看到任何NullPointerException異常? – Ashish

+0

您可以嘗試通過將GenericEntityService設置爲'@ManagedProperty(value =「#{NameOfYourStatelessBean}」)'而不是'@ EJB'來注入bean - 此方法允許注入f.e.將會話bean管理爲具有更嚴格焦點的bean,如請求範圍。但我想這需要使用@ManagedBean(name =「NameOfYourStatelessBean」)註釋你的無狀態類。至少我記得在幾年前的大學課程中遇到了類似的問題(https://github.com/RovoMe/University/tree/master/DST_2011_SS_Assignment_3/1_jsf/web/src/dst3/ejb/jfs) –

+0

@Ashish不,它只是沒有通過注入機制初始化 – Lostboy

回答

0

更新:這個答案很有用,因爲默認界面是@Local

AFAIR這可能是怎麼一回事,因爲你需要在指定的接口進行本地或遠程註釋嘗試:

@Local 
public interface GenericEntityService { 

    <T> T getById(int id, Class<T> entityClass); 

    void deleteById(int id, Class entityClass); 
} 
+0

默認情況下,它將被視爲「@ Local」。 –

+0

謝謝@LuiggiMendoza我有一種誤解 –