2013-03-14 8 views
5

Ich folgte nur dem Ticket-Monster-Tutorial (http://www.jboss.org/jdf/examples/ticket-monster/tutorial/Introduction/) und fügte meiner Lösung eine Rest-Service-Klasse hinzu.JSF Deploy-Ausnahme: Unzufriedene Abhängigkeiten für den Typ EntityManager

package projectFoo.rest; 
import java.util.List; 
import javax.enterprise.context.RequestScoped; 
import javax.inject.Inject; 
import javax.persistence.EntityManager; 
import javax.ws.rs.GET; 
import javax.ws.rs.Path; 
import javax.ws.rs.Produces; 
import javax.ws.rs.core.MediaType; 

import projectFoo.model.party; 


@Path("/partys") 
@RequestScoped 
public class partyService { 

@Inject 
private EntityManager em; 

@GET 
@Produces(MediaType.APPLICATION_JSON) 
public List<party> getAllEvents() { 
    @SuppressWarnings("unchecked") 
    final List<party> results = 
      em.createQuery(
      "select e from party e order by e.name").getResultList(); 
    return results; 
} 
} 

@Inject ist unterstrichen, Rückkehr: "Nein Bohne ist für die Injektion in die Injektionsstelle [JSR-299 §5.2.1] berechtigt"

Wenn ich versuche, um das Paket zu implementieren, die Prozess wird die folgende Meldung fehlschlagen und zurückgeben:

Unsatisfied dependencies for type [EntityManager] with qualifiers [@Default] at injection point. 

muss ich eine Bohne für den Entity Manager hinzuzufügen? Wie sollte dieser aussehen? Das Tutorial erwähnt dies nicht. Im finalen ticket-monster Projekt konnte ich keine Definition von Beans finden.

Antwort

8

Die EntityManager ist in einem Artefakt gefunden, für das CDI nicht aktiviert ist (JPA-Provider-Jars haben kein beans.xml enthalten).

Sie können entweder die „gute alte“ @PersistenceContext Anmerkung insead von @Inject verwenden, oder wenn Sie @Inject verwenden möchten, müssen Sie wie folgt ein Produzent für die EntityManager zur Verfügung zu stellen:

class Resources { 
    @SuppressWarnings("unused") 
    @Produces 
    @PersistenceContext 
    private EntityManager em; 
... 
Verwandte Themen