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.

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;
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
Caused by: org.jboss.weld.exceptions.IllegalArgumentException: WELD-001324 Argument bean must not be null
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.

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.