Einzelnen Beitrag anzeigen
Alt 10.08.2012, 23:11   #1 (permalink)
kirchrath
Benutzer
short
 
Registriert seit: 12.07.2009
Fachbeiträge: 28
Abgegebene Danke: 6
Erhielt 0 Danke für 0 Beiträge
Standard EJB dependency injection in Projektreferenz

Hallo,
ich verwenden Netbeans und habe als mein Hauptprojekt ein Webprojekt mit einem Glassfish (3.1.2) Webservice angelegt. Dieses Projekt dient mir als Projektbasis. Derzeit gibt es zwei weitere Projekte. Ein Interfaceprojekt (definiert das WS-Interface) und einem Managerprojekt.
Die Hauptklasse des Managerprojekts wird mittels Spring in den Webservice injiziert.
Das Managerprojekt übernimmt die Datenspeicherung. Die wollte ich mit der JPA umsetzten.
Dafür hat der Manager diverse Instanzen wie diese:

Java Code: Quelltext in neuem Fenster öffnen
1
@EJB DataObjectFacade dataObjectDao;
Diese werden bereits nicht automatisch befüllt und es kommt zu NullPointerExceptions.
Das gleiche gilt auch wenn ich diese mittels Spring bereits injiziere für den EntityManager von
Java Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
18
19
20
21
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
@Stateless
public class DataObjectFacade extends AbstractFacade<DataObject> {
   @PersistenceContext
   private EntityManager em;
 
   @Override
   protected EntityManager getEntityManager() {
      return em;
   }
 
   public DataObjectFacade() {
      super(DataObject.class);
   }
}
 
/**
* Autogenerierte Klasse
*/
 
public abstract class AbstractFacade<T> {
   private Class<T> entityClass;
 
   public AbstractFacade(Class<T> entityClass) {
      this.entityClass = entityClass;
   }
 
   protected abstract EntityManager getEntityManager();
 
   public void create(T entity) {
      getEntityManager().persist(entity);
   }
 
   public void edit(T entity) {
      getEntityManager().merge(entity);
   }
 
   public void remove(T entity) {
      getEntityManager().remove(getEntityManager().merge(entity));
   }
 
   public T find(Object id) {
      return getEntityManager().find(entityClass, id);
   }
 
   public List<T> findAll() {
      javax.persistence.criteria.CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
      cq.select(cq.from(entityClass));
      return getEntityManager().createQuery(cq).getResultList();
   }
 
   public List<T> findRange(int[] range) {
      javax.persistence.criteria.CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
      cq.select(cq.from(entityClass));
      javax.persistence.Query q = getEntityManager().createQuery(cq);
      q.setMaxResults(range[1] - range[0]);
      q.setFirstResult(range[0]);
      return q.getResultList();
   }
 
   public int count() {
      javax.persistence.criteria.CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
      javax.persistence.criteria.Root<T> rt = cq.from(entityClass);
      cq.select(getEntityManager().getCriteriaBuilder().count(rt));
      javax.persistence.Query q = getEntityManager().createQuery(cq);
      return ((Long) q.getSingleResult()).intValue();
   }
   
}


Das Managerprojekt ist als Bibliothek angelegt und wird direkt als Projektreferenz in dem Webprojekt referenziert. Die persistence.xml liegt im Webprojekt - im Managerprojekt ist keine enthalten (da ich sie dort nicht benötige).

Wenn jemand damit Erfahrungen hat oder eine Idee wieso die Instanzen nicht automatisch erzeugt werden, würde ich mich über die Hilfe freuen.

Danke und viele Grüße
kirchrath ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten