2013-03-14 14 views
5

Ho appena seguito il tutorial ticket-monster (http://www.jboss.org/jdf/examples/ticket-monster/tutorial/Introduction/) e ho aggiunto una classe di servizio di riposo alla mia soluzione.Eccezione distribuzione JSF: dipendenze non soddisfatte per tipo 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 è sottolineato, il ritorno: "No fagiolo è idoneo per l'iniezione al punto di iniezione [JSR-299 §5.2.1]"

Quando cerco di distribuire il pacchetto, il processo non riuscirà e restituire il seguente messaggio:

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

Devo aggiungere un bean per Entity Manager? Come dovrebbe essere questo? Il tutorial non menziona questo. In realtà non sono riuscito a trovare nessuna definizione di fagioli nel progetto finale di monster-ticket.

risposta

8

Il EntityManager si trova in un artefatto per il quale CDI non è abilitato (i vasi del fornitore JPA non hanno un beans.xml incluso).

È possibile utilizzare il "buon vecchio" @PersistenceContext annotazione INSEAD di @Inject, oppure se si desidera utilizzare @Inject, è necessario fornire un produttore per l'EntityManager come questo:

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