Bonjour à tous,
Je débute sur les ejb, je cherche à faire une application :ejb,jsf,jpa
D'abord j'ai constaté qu'avec les ejbs on confond la couche service et la couche dao(comparant avec une application web sans ejb)
ie:on attaque directement la couche dao depuis un managedBean de jsf par exemple!
Moi je cherche à respecter mon architecture habituelle:
Couche présentation:jsf
Couche service
Couche dao
Avec le managedBean de jsf qui appelle la couche service qui à son tour appelle le dao:

MON PROBLEME:
Toutes les injections ne fonctionnent pas!!!:
l'entity manager est à null!!! par exemple(@PersistenceContext(unitName = JPA_UNIT_NAME) ne marche pas
Aussi cette injection ne marche pas:
@EJB
private IGenericDao<Personne> daoPersonne;


Je me demande donc est ce que le fait que j'utilise les generics qui pose problème
Merci de me donner plus d'informations

Voici un apperçu de mes classes:
La couche dao:
//--------------------------------------
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 
@Remote
public interface IGenericDao<T> {
	public void create(T e) ;}
 
public abstract class GenericDaoImpl<T>  implements IGenericDao<T>{
protected Class<T> typeEntity;
	private static final String JPA_UNIT_NAME="java_project"; 
	@PersistenceContext(unitName = JPA_UNIT_NAME)
 
	@SuppressWarnings("unchecked")
	public GenericDaoImpl(Class<T> typeEntity) {
		{
			this.typeEntity = typeEntity;
		}
	}
public void create(T e) {
		em.persist(e);
	}}
 
@Stateless
public class DaoPersonne extends GenericDaoImpl<Personne>{
	public DaoPersonne() {
		super(Personne.class);
	}
 
}
la couche service:
//-------------------------------------
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
@Remote
public interface IServiceEJBRemote<T> {
public void create(T t);
}
 
@Stateless
public class ServicePersonneEJB implements IServiceEJBRemote<Personne> {
 
@EJB
public IGenericDao<Personne> daoPersonne;
 
public ServicePersonneEJB() {
	super();
}
 
@Override
public void create(Personne e) {
	daoPersonne.create(e);
}
}
la couche ManagedBean de jsf:
//-----------------------------------
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
@ManagedBean
@SessionScoped
public class ControllerManager {
 
@EJB
IServiceEJBRemote<Personne> servicePersonne;
 
public String create(){
servicePersonne.create(newPersonne);
return "";
}
}
//-----------------------------------