2016-09-26 5 views
0

(Bitte seien Sie nett, das sind meine ersten Schritte in Java EE). Ich arbeite mit Netbeans 8.1 und implementiere ein EJB-Modul auf einem lokalen Glassfish Server. Ich habe eine Glassfish-resource.xml mit der folgenden Ressource definiert:Java EE-Injektion funktioniert nicht auf Glassfish

<jdbc-resource enabled="true" jndi-name="java:app/jdbc/myDataSource" 

Und ich habe eine DAO-Klasse, wo ich versuche, die Ressource zu injizieren

@Named 
public class SimpleDal { 
    @Resource(name = "jdbc/myDataSource", lookup = "java:app/jdbc/myDataSource") 
    private static DataSource ds ; 

ich mehrere Möglichkeiten versucht haben, mach das, aber ich habe immer NULL in der Variablen ds. Ich habe den Kontext debuggen und abgefragt, und ich habe immer den Namen java:app/jdbc/myDataSource nicht gefunden. Vielleicht mache ich etwas nicht richtig, das sind meine ersten Schritte auf Java EE (ich habe immer für PHP entwickelt). Kann mich bitte jemand anweisen, um nicht mehr Zeit zu verlieren? Danke

Hinweis: Ich habe die @Named Annotation der SimpleDal-Klasse hinzugefügt, weil ich irgendwo gelesen habe, dass, um Injection zu arbeiten, ich auf einer Bohne sein muss.

+0

In CDI ist selten etwas auf statischen Feldern erlaubt, außer es ist in der Dokumentation angegeben. – thatsIch

Antwort

0

Also habe ich nach einiger Zeit endlich herausgefunden, dass die Injektion auf statischen Feldern nicht zuverlässig funktioniert (zumindest bei meinem Setup). Das Feld wurde in ein Instanzfeld geändert und es funktionierte. Diese Antwort wird an alle Personen gesendet, die sich in der gleichen Situation befinden

Verwandte Themen