Использование CDI в шаблоне синглтона
Я пытаюсь внедрить объект регистратора в класс, который реализован с использованием одноэлементного подхода.
Код выглядит примерно так:
Logger
класс:
public class LoggerFactory {
@Produces
public Logger getLogger(InjectionPoint caller){
return Logger.getLogger(caller.getMember().getDeclaringClass().getName());
}
}
Затем я создаю класс, который нуждается в регистраторе и реализует шаблон 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;
}
}
Если я запускаю код (на Glassfish 3.1.2.2), я получаю NPE, как только я пытаюсь использовать регистратор. Что я делаю не так (beans.xml
файл на месте)? Я также пытался использовать@Inject
с методом сеттера дляLogger
объект, но без удачи.