2015-08-14 30 views
1

在我的Java EE aplication我用下面的代碼片段獲得BeanManager使用Java EE BeanManager爲辛格爾頓

public static BeanManager getBeanManager() { 
    try { 
     InitialContext initialContext = new InitialContext(); 
     return (BeanManager) initialContext.lookup("java:comp/BeanManager"); 
    } catch (NamingException e) { 
     throw new RuntimeException("Failed to retrieve BeanManager!", e); 
    } 
} 

難道是安全使用BeanManager爲單身,所以我不會在初始查找上下文每次我需要BeenManager?

回答

1

如果你想使用BeanManager成標準EE(V6-V7)組件則是完全合法的,並建議簡單地做:

@Inject BeanManager beanManager 
+0

Unfortunally我用BeanManager Java EE組件內,這不提供一種使用CDI的方式。其中之一是ExceptionMapper。其實這就是爲什麼我需要一個BeanManager的原因,我需要有一種方法來訪問EJB –

+0

我正在使用wildfly 8.1.0.Final它與焊接2.1和resteasy 3.0.8並且可以使用@Inject裏面ExceptionMapper。 – Franck

+1

如果你真的被卡住了,我建議使用delta spike Bean Manager Provider:https://deltaspike.apache.org/documentation/core.html#BeanManagerProvider – Franck