2017-09-19 15 views
0

動作していない私は、空のbeans.xmlののJava EE 6プロデューサーは、私は7のようJBossを使用し、Java EE 6のです

を持っている私はこのようなロガープロデューサーを持っている...

@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); 
    } 

}

私のクラスで

次のように私は注入し...

@Inject 
Logger logger; 

私はそれぞれのケース

0でJava utilのロガーをインポート
import java.util.logging.Logger; 

ロガーの注入が失敗しているしかし、すべてが正しく展開し、私は返答を注入したロガーにすべての

+0

あなたの要件に応じてlog4j.xmlファイルを変更する必要があります。 – idiotduffer

+0

hi @idiotduffer、ご返信ありがとうございます。私はlog4jを使用していませんが、私はjava util loggingを使用しています。これは自動生成されたlogging.propertiesファイルを/standalone/configuration/logging.properties –

+0

で使用していますbeans.xmlは適切な場所にありますか?あなたはWARファイルまたはEARファイルを持っていますか?動作する他のオブジェクトも注入しますか? – awagenhoffer

答えて

1

感謝を使用しようとする場合、私は、ランタイムNullPointerを取得します。

私は適切な場所(WEB-INF)にbeans.xmlを持っています。それは.warとしてパッケージ化されています。

問題は、私がロガーを注入していたクラス(bean)に自分のコーディングエラーがありました。私は誤ってCDIは修正が@PostConstructメソッドでコンストラクタを交換したこと

を注入する機会があったし、すべてがうまく働いていた前にこれロガーを使用しようとしたクラスを初期化するためにconstructorを使用していました。

@MyAnnotation 
@Singleton 
public class MtHammer implements Hammer { 

    ..... 

    @Inject 
    Logger logger2; 


    @PostConstruct 
    private void startup() { 

     initialise(); 

    } 

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

.. bean.xmlをMETA-INFフォルダに置いてください。warファイルはMETA-INFに、EARファイルはWEB-INFに置いてください。 – idiotduffer

関連する問題