Usando CDI en un patrón de singleton
Estoy tratando de inyectar un objeto logger en una clase que se implementa siguiendo un enfoque de singleton.
El código casi se ve así:
Logger
clase:
public class LoggerFactory {
@Produces
public Logger getLogger(InjectionPoint caller){
return Logger.getLogger(caller.getMember().getDeclaringClass().getName());
}
}
Luego creo una clase que necesita registrador e implementa el patrón 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 ejecuto el código (en Glassfish 3.1.2.2) obtengo un NPE tan pronto como intento usar el registrador. Lo que estoy haciendo mal (beans.xml
archivo está en su lugar)? También he intentado usar@Inject
con un método setter para elLogger
Objeto pero sin suerte.