Keine Bohne ist berechtigt, für die Injektion, injection point [JSR-299 §5.2.1]
Ich wollte injizieren Sie die Standard-Java-logger. Aber Eclipse unterstreicht es und Staaten "Keine Bohne ist berechtigt, für die Injektion, injection point [JSR-299 §5.2.1]"
Wenn ich deploy ohnehin, wird die folgende Ausnahme ausgelöst. Warum scheitert es zu injizieren Java-Logger? Gleich für den EntityManager, aber nicht für meine eigene UserRepository Bean.
org.jboss.weld.exceptions.DeploymentException: WELD-001408 Unsatisfied dependencies for type [Logger] with qualifiers [@Default] at injection point [[field]
code:
import java.util.logging.Logger;
import javax.ejb.Stateless;
import javax.enterprise.event.Event;
import javax.inject.Inject;
import javax.persistence.EntityManager;
import com.terry.webapp.data.UserRepository;
import com.terry.webapp.model.usermgmt.User;
//The @Stateless annotation eliminates the need for manual transaction demarcation
@Stateless
public class LoginService {
@Inject
private Logger log;
@Inject
private EntityManager em;
@Inject
private UserRepository repository;
public User login(User user) {
log.info("login " + user.getUsername());
User rUser = repository.findByCredentials(user.getUsername(), user.getPassword());
return rUser;
}
}
InformationsquelleAutor feder | 2013-11-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Injizieren einen logger benötigen Sie eine producer-Methode, die eine
Logger
denen Sie injiziert werden können.Sowie
EntityManager
muss injiziert werden, mit@PersistenceContext(unitName="pscontext")
weil es mit Daten erstellt, die in Ihrempersistence.xml
, so dass IhreEntityManager
werdenIch verstehe einfach nicht, wenn Sie benötigen, um erstellen Sie Ihr eigener Produzent-und wenn es anwendbar auf einfache user @Inject. Was sind die Voraussetzungen dafür?
Check out this post werden Sie verstehen, mehr über Produzent Methoden : stackoverflow.com/questions/16534728/.... Wie @AVolpe..erwähnt, Wenn Sie
producer method
zu erstellenEntityManager
undInject
in anderen Klassen, die Sie nicht brauchen, um für alle Orte, die den Namen zu ändern der@ PersistenceContext
wenn Sie die Namen ändern in derpersistence.xml
Ich habe das gleiche problem, und der einzige Weg, um diese Arbeit zu machen, ist die Veränderung der EJB zu Zustandsbehafteten, warum ist das so? Ich brauche, um es Arbeit mit Stateless EJBs.
InformationsquelleAutor SRy