À l'aide de CDI dans un pattern singleton

Je suis en train d'injecter un objet logger dans une classe qui est mis en œuvre à la suite d'un singleton approche.

Le code ressemble presque à ce:

Logger classe:

public class LoggerFactory {
    @Produces 
    public Logger getLogger(InjectionPoint caller){
        return Logger.getLogger(caller.getMember().getDeclaringClass().getName());
    }
}

Puis-je créer une classe qui a besoin d'enregistreur et implémente le Pattern Singleton:

public class MySingleton{
    @Inject
    private Logger logger;

    private MySingleton instance;

    /*
     * Private constructor for singleton implementation
     */
    private MySingleton(){
        logger.info("Creating one and only one instance here!");
    }

    public MySingleton getInstance(){

        if(instance == null) {
            instance = new MySingleton();
        }

        return instance;
    }

}

Si j'exécute le code (sur Glassfish 3.1.2.2), je reçois un NPE dès que j'essaie d'utiliser l'enregistreur.
Ce que je fais mal (beans.xml fichier est en place)?
J'ai aussi essayé d'utiliser @Inject avec une méthode de définition de la Logger objet, mais avec pas de chance.

Les Injections qui se passe après la construction. Si vous ne pouvez pas l'utiliser dans le constructeur
Pourquoi on utilise un singleton au lieu de injectin il whre vous en avez besoin, et laissez-CDI en faire un singleton dans l'étendue du haricot?
Je ne sais pas beaucoup au sujet de CDI mais ne devriez-vous pas utiliser votre injecteur pour créer votre objet ? Avec le Printemps, l'injection se fait uniquement lors de la création d'objet à l'aide d'un Contexte d'Application et avec Guice, uniquement lors de l'utilisation d'un Injecteur.
Vous devriez être en utilisant @Singleton pour indiquer au conteneur CDI que la même instance d'un bean devrait toujours être injecté.
la vôtre est la bonne réponse de l'OMI. Soins à reposter comme une réponse?

OriginalL'auteur fabpicca | 2013-02-28