Iniezione @EJB e contesto di denominazione aziendale - relazione tra i due
Domanda
La specifica Java EE afferma che un'iniezione EJB come questa:
@EJB MyInterface myBean;
creerà una voce nel contesto dei nomi aziendali, vale a dire. java:comp/env/<FQN>.MyInterface/myBean
. Spetta al deployer associare questa voce di contesto a un valore reale e iniettare questo valore nel campo myBean.
Ora ho la sensazione che mi manchi qualcosa qui:
Perché è necessaria la voce di contesto? Verrà iniettata un'istanza del bean richiesto, quindi perché è necessaria la voce nel contesto? Perché l'iniezione deve avvenire tramite la voce di contesto?
Soluzione
Tutte le risposte ricevute non hanno risolto il problema: perché è necessaria una voce ENC se l'annotazione dell'iniezione fornisce informazioni sufficienti per risolvere l'iniezione (quindi il mio primo pensiero è stato che fosse ridondante).
La risposta è che l'iniezione può essere sovrascritta nel descrittore di distribuzione. Questo perché lo standard EJB definisce i ruoli degli sviluppatori.
Presuppone che il " provider di bean " può richiedere un'iniezione, anche fornire valori predefiniti. Ma il & Quot; assemblatore di applicazioni & Quot; può ignorare questi valori. Il & Quot; provider di bean & Quot; si presume che utilizzi annotazioni o XML e il " assemblatore " si presume che utilizzi principalmente l'XML.
Ecco perché lo standard EJB definisce questa relazione tra ENC e un'iniezione.
Altri suggerimenti
Penso che se devi iniettare un bean di sessione stateful avrai bisogno di un contesto che conosca la relazione tra l'istanza EJB e alcune dipendenze EJB precedentemente iniettate (a tale istanza).
Serve per permetterti ricerche per stringa in qualche modo ottenuta.