Bonjour,
je rencontre actuellement un problème d'injection d'un bean dans un EJB.
Ce bean se trouve dans une de nos librairies contenant bien le beans.xml.
Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 public class MainMailer extends DefaultMailer { @Inject public MainMailer(@EmailConfig final Properties emailConfig) { super(emailConfig); } @Override public LabelKeyBundle getBundle(final Locale locale) { return new LabelKeyBundle(locale, this.getClass().getClassLoader(), "mail"); } }
Ensuite nous avons bien un producer pour injecter le fichier properties.
Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 @Singleton public class EmailConfigProvider { @Produces @EmailConfig private final Properties emailConfig = ConfigurationUtils.loadProperties("xx/xxxxxxx/emailconfiguration"); }
Ensuite dans notre EJB nous injectons le Mailer ainsi que le fichier properties.
C'est là que cela se gâte car cela ne fonctionne tout simplement pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 @Inject private Mailer mailer; @Inject @EmailConfig private Properties emailConfig;
Après avoir ajouté un conditional breakpoint lors du déploiement dans le BeanManagerImpl, je vois bien que l'InjectionPoint est bien le mailer et que le resolvedBean est bien null.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Caused by: org.jboss.weld.exceptions.IllegalArgumentException: WELD-001324 Argument bean must not be null
Par contre dès que l'on transforme cette librairie en module EJB, comme par magie cela fonctionne.
Voilà si vous avez une idée, elle est la bienvenue.
Merci.
Partager