Hallo Leute,
habe hier ein Projekt laufen das aus verschiedenen OSGi-Bundles besteht. Die hier wichtigen 2 sind de.as.test.sensor und de.as.test.persistence
In ersterem habe ich die folgende vereinfacht dargestellte Klasse:
und die Component-Definition, die auf den IDataBaseService referenziert:
[XML]<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" inmediate="true" name="de.hy.demounit.sensor.DataContainerDAO">
<implementation class="de.as.test.sensor.DataContainerDAO"/>
<reference bind="bind" cardinality="1..1" interface="de.as.test.persistence.services.IDataBaseService" name="IDataBaseService" policy="static" unbind="unbind"/>
</scr:component>[/XML]
Im 2.Bundle liegt jetzt das Interface IDataBaseService und dazu die Implementierung dessen.
Wenn ich jetzt meine Applikation starte gibt er mir die Ausgaben, aus der "bind"-Methode. Rufe ich jedoch später die connect()-Methode auf gibt er mir eine Nullpointer-Exception auf die Variable "dbService".
Weiß jemand was ich falsch mache? Da ja eigentlich das Binding einwandfrei funktioniert hat.
habe hier ein Projekt laufen das aus verschiedenen OSGi-Bundles besteht. Die hier wichtigen 2 sind de.as.test.sensor und de.as.test.persistence
In ersterem habe ich die folgende vereinfacht dargestellte Klasse:
Java:
public class DataContainerDAO implements IPersistableDAO {
private IDataBaseService dbService;
public void bind(IDataBaseService dbService) {
System.out.println("bind!: " +dbService);
this.dbService = dbService;
}
public void unbind(IDataBaseService dbService) {
System.out.println("unbind!: " +dbService);
this.dbService = null;
}
public void connect() {
dbService.openDBConnection();
}
und die Component-Definition, die auf den IDataBaseService referenziert:
[XML]<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" inmediate="true" name="de.hy.demounit.sensor.DataContainerDAO">
<implementation class="de.as.test.sensor.DataContainerDAO"/>
<reference bind="bind" cardinality="1..1" interface="de.as.test.persistence.services.IDataBaseService" name="IDataBaseService" policy="static" unbind="unbind"/>
</scr:component>[/XML]
Im 2.Bundle liegt jetzt das Interface IDataBaseService und dazu die Implementierung dessen.
Wenn ich jetzt meine Applikation starte gibt er mir die Ausgaben, aus der "bind"-Methode. Rufe ich jedoch später die connect()-Methode auf gibt er mir eine Nullpointer-Exception auf die Variable "dbService".
Weiß jemand was ich falsch mache? Da ja eigentlich das Binding einwandfrei funktioniert hat.