J'ai rencontré un problème que je n'arrive pas à résoudre. Je voudrais injecter un EJB dans un autre comme celui-ci:Java EE, injection d'un EJB dans un autre EJB
@Stateless
public class MainEJB {
@EJB
private HelperEJB helper;
}
@Stateless
public class HelperEJB implements HelperInterface {
}
Comme vous pouvez le voir, HelperEJB est exposée à travers une vue sans interface (note: HelperInterface
est une interface d'une bibliothèque externe, il est pas un EJB interface). Cela ne fonctionne, et je vais l'exception suivante non:
javax.naming.NamingException: Lookup failed for 'org.mycompany.ejb.HelperEJB #org.mycompany.ejb.HelperEJB'
Toutefois, si HelperEJB
n'implémente aucune interface:
@Stateless
public class HelperEJB {
}
Il fonctionnera. Il fonctionnera également si j'ai une interface @Local
entre MainEJB et HelperEJB. Pourquoi cela ne peut-il être fait par une vue sans interface comme lors de ma première tentative?
Merci, ça marche. Pourquoi est-ce si? Si un autre EJB est injecté via une vue sans interface, il * doit * être référencé par l'une de ses interfaces s'il en implémente? – Dario
@Dario Comme l'a dit Arjan Tijms dans son article. – deltaforce2