I'm trying to understand how those annotations work.I have the following Activator.class and MyConf.class in the same bundle. The Activator code: @Component@Slf4jpublic class Activator implements BundleActivator, ManagedService { private static Logger logger = LoggerFactory.getLogger(Activator.class);private static final String CONFIG_PID = "mytest";private ServiceRegistration serviceReg; @Referenceprivate MyConf conf; public void start(BundleContext context) { Hashtable<String, Object> properties = new Hashtable<String, Object>();properties.put(Constants.SERVICE_PID, CONFIG_PID);serviceReg = context.registerService(ManagedService.class.getName(), this , properties); } public void stop(BundleContext context) {serviceReg.unregister(); } @SuppressWarnings("rawtypes") @Override public void updated(Dictionary config) throws ConfigurationException {if (config == null) {return;}conf.setFoo((String) config.get("foo"));conf.refresh(); }
and MyConf: @Componentpublic class MyConf {private String foo = "bar";public MyConf() {}public String getFoo() {return foo;} public void setFoo(String foo) {this.foo = foo;}public void refresh() {System.out.println("foo=" + this.foo);} } It seems pretty basic, but when I deploy it in Karaf says: Status: WaitingDeclarative Servicesar.com.aerolineas.esb.operaciones.pruebas.Activator (21) missing references: conf and in the log, there's a NullPointerException at conf.setFoo in the Activator, as if the framework never instantiate + inject MyConf. Am I missing something? Thanks in advaced.Nick.