J'ai un projet JEE qui tourne sur Wildfly et qui doit insérer des données d'un excel en base de données.
Pour ce faire j'ai suivi le tuto JPA de OpenClassRoom et je me retrouve avec une erreur sur mon objet de DAO que j'ai injecté grâce à `@EJB`. En voici le code :
@Stateless
@LocalBean
public class ColisDao {
public static final String SELECT_ALL_COLIS = "select * from Colis;";
@PersistenceContext(unitName="bdd_colis")
private EntityManager em;
public ColisDao() {
}
public void creer(Colis colis) {
...
}
public void remove(Colis colis) {
...
}
}
A présent j'utilise cette DAO dans ma classe qui lit le fichier excel et qui souhaite remplir les objets en base.
public class RecoveryImpl {
@EJB
private ColisDao colisDao;
public void fillDataBase() throws IOException {
...
some code
...
colisDao.creer(c); //here's my error NullPointer
}
}
L'erreur intervient à la ligne colisDao.creer(c); ce qui n'est pas censé se produire car j'ai injecté le code.
J'ai trouvé une solution alternative qui n'explique pas en quoi j'ai fait faux sur mon poste de départ, mais qui semble contourner le problème. Voici mon nouveau code pour RecoveryImpl :
@EJB(name="ejb/colisDao", beanInterface=ColisDao.class)
public class RecoveryImpl {
public static void fillDataBase() throws IOException {
try {
colisDao = (ColisDao) new InitialContext().lookup("ejb/colisDao");
}
colisDao.creer(c);
}
}