2012-09-25 3 views
0

Le client ne peut jamais utiliser le nouvel opérateur pour acquérir la référence. Alors, comment pouvons-nous invoquer la logique métier sans référence à la mémoire? Je n'ai pas éclairci ça. S'il vous plaît expliquer avec un exemple.Injection de dépendances dans @EJB

Répondre

1

Comme vous l'avez mentionné dans le sujet, dependency Injection in EJB, vous n'avez donc pas besoin de créer vous-même des objets, appelez des méthodes métier sur les beans injectés.

l'exemple qui suit est:

Pour injecter une session Bean à l'autre utiliser l'annotation @EJB:

@Stateless 
public class BookServiceBean implements BookService { 
    @EJB 
    private SearchService search; 

erreur commune: vous ne pouvez pas injecter dans les classes EJB 3.0, mais seulement des interfaces. Cela a été modifié dans EJB 3.1

Pour injecter un DataSource, la file d'attente, ConnectionFactory, Mail, etc. SessionContext vous aurez besoin de l'annotation @Resource:

@Stateless 
public class BookServiceBean implements BookService { 

    @Resource(mappedName="jndi/sample") 
    private DataSource ds; 

Pour utiliser la persistance, il suffit d'utiliser la @PersistenceContext annotation:

@Stateless 
public class BookServiceBean implements BookService { 
    @PersistenceContext 
    private EntityManager em; 

Espérons que ça aide!

+2

> Cela va changer dans EJB 3.1 ... - Ceci * ne changera pas dans EJB 3.1, cela a déjà été changé dans EJB 3.1 il y a environ 3 ans;) –

+0

Merci d'avoir signalé :) – Anshu