It turns out that the CDI spec does not allow a singleton to be injected into a generic type class. So I wrote a lazy initialization of a static final dozer instance.
I added the following two methods to the DozerInstantiator:
public static DozerBeanMapper getInstance(){
return MapperHolder.instance;
}
private static class MapperHolder{
static final DozerBeanMapper instance = new DozerBeanMapper(mappingList);
}
It is then called in the generic type class :
DozerInstantiator dozerInstantiator = new DozerInstantiator();
try{
mapper = dozerInstantiator.getInstance();
}catch(Exception e){
log.error("Failed to initialise singleton Dozer bean");
}