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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top