2017-09-19 1 views
0

Ich bin mit JBoss als 7 und Java EE 6. Ich habe eine leere beans.xmlJava EE 6 Produzent funktioniert nicht

ich einen Logger Producer wie dieses ..

@Singleton 
@Startup 
public class LoggerProducer { 

    private static Logger logger = Logger.getLogger(LoggerProducer.class.getName()); 

    @Produces 
    public Logger produceLogger(final InjectionPoint injectionPoint) { 
     final String injectingClass = injectionPoint.getMember().getDeclaringClass().getName(); 
     return Logger.getLogger(injectingClass); 
    } 

}

in meiner Klasse i wie folgt injizieren ...

@Inject 
Logger logger; 

ich importieren util Logger java jeweils

0 richtig
import java.util.logging.Logger; 

Alles setzt jedoch die Einspritzung des Loggers ist defekt und ich bekomme eine Laufzeit NullPointer wenn ich versuche, die injiziert Logger

+0

..you haben die log4j.xml Datei ändern .. nach Ihren Wünschen – idiotduffer

+0

hallo @idiotduffer, vielen Dank für Ihre Antwort. Ich benutze log4j nicht, aber ich benutze Java-util-Protokollierung. Dies verwendet die automatisch generierte Datei logging.properties in /standalone/configuration/logging.properties –

+0

Haben Sie Ihre beans.xml an der richtigen Stelle? Hast du eine WAR- oder EAR-Datei? Spritzen Sie auch andere Objekte, die funktionieren? – awagenhoffer

Antwort

1

Danke für Antworten auf alle zu verwenden.

Ich habe beans.xml an der richtigen Stelle (WEB-INF). Es ist als .war verpackt.

Das Problem war mein eigener Codierungsfehler in der Klasse (Bean), in die ich den Logger injizierte. Ich hatte irrtümlicherweise eine constructor verwendet, um die Klasse zu initialisieren, die so versuchte, den Logger zu verwenden, bevor CDI eine Chance hatte, es zu injizieren

Die Lösung war, den Konstruktor durch eine Methode zu ersetzen und alles funktionierte gut.

@MyAnnotation 
@Singleton 
public class MtHammer implements Hammer { 

    ..... 

    @Inject 
    Logger logger2; 


    @PostConstruct 
    private void startup() { 

     initialise(); 

    } 

    private void initialise() { 
      logger.info("logger...Initialising ..."); 
     .... 
     } 
+0

..place Ihre Bean.xml im META-INF-Ordner, für WAR-Datei sollte es in META-INF und für EAR-Datei sollte es in WEB-INF sein. – idiotduffer