2012-11-29 53 views
4

我關於Java EE CDI讀了,我是一個困惑的基於類的資源注入是如何工作的基於類的Java EE CDI注入

的Java EE 6教程給出了下面的實例:

@Resource(name="myMessageQueue", 
       type="javax.jms.ConnectionFactory") 
public class SomeMessageBean { 
... 
} 

我知道它是如何聲明的,但在SomeMessageBeanClass中聲明的資源應該如何使用?什麼是myMessageQueue資源注入?

回答

4

@Resource在源自EJB的註釋中。

它的血統可追溯到注入田野之前的日子。在那些日子裏,「注入」意味着將某些東西放入與每個EJB bean相關的映射中;所謂的ENC(企業命名上下文)。

您可以通過在EJB內或從EJB上下文(您也必須注入)中請求InitialContext中的「java:/ comp」命名空間來訪問此「映射」。

這些天使用ENC似乎很少見。現場注射更方便。

+0

謝謝你的迴應。後續問題,如果必須從JNDI InitialContext獲取資源,那麼聲明基於類的Resource註解有什麼意義? –

+0

這種方式沒什麼意義。它來源於XML變體。通過這個,你可以在一個(外部)XML文件中聲明給定的bean的ENC中放置了什麼。 '@ Resource'只是鏡像XML。 –

+0

謝謝你指點我正確的方向。我閱讀了ENC,現在我明白(我認爲)API應該如何工作,但我認爲這樣的API比它需要更復雜。 –