Deklarativer Service im RCP Feature ?
Hallo,
ich habe einen deklarativen OSGI Service. Diesen habe ich in der Run Configuration auf Autostart = True gestellt. Zusätzlich verwende ich den EventAdmin Service zum Austausch von Informationen zwischen verschiedenen Plugins.
Die Plugins:
org.eclipse.equinox.ds und org.eclipse.osgi.service habe ich ebenfalls auf Autostart gestellt.
Beim Start aus Eclipse herraus funktonieren die Services. Wenn ich aber ein feature Product erstelle und dieses exportiere, funktionieren beide Services nicht.
Der folgende Code soll den EventAdmin Service bereitstellen: eventAdminServiceReference ist dann beim feature-Export immer NULL. (Dabei scheint es egal zu sein was ich in der Product Configuration angebe).
Beim deklarativen Service ist die ServiceReference immer NULL.
DS Service component.xml
Hat jemand eine Idee wieso es aus Eclipse herraus funktioniert aber nicht im feature-Product ?
Hallo,
ich habe einen deklarativen OSGI Service. Diesen habe ich in der Run Configuration auf Autostart = True gestellt. Zusätzlich verwende ich den EventAdmin Service zum Austausch von Informationen zwischen verschiedenen Plugins.
Die Plugins:
org.eclipse.equinox.ds und org.eclipse.osgi.service habe ich ebenfalls auf Autostart gestellt.
Beim Start aus Eclipse herraus funktonieren die Services. Wenn ich aber ein feature Product erstelle und dieses exportiere, funktionieren beide Services nicht.
Der folgende Code soll den EventAdmin Service bereitstellen: eventAdminServiceReference ist dann beim feature-Export immer NULL. (Dabei scheint es egal zu sein was ich in der Product Configuration angebe).
Java:
@Override
public void start(BundleContext context) throws Exception {
super.start(context);
plugin = this;
Utils.initLogger();
ServiceReference eventAdminServiceReference = getBundle().getBundleContext().getServiceReference(
EventAdmin.class.getName());
if (eventAdminServiceReference != null) {
// EventAdmin Service lookup
eventAdmin = (EventAdmin) getBundle().getBundleContext().getService(eventAdminServiceReference);
if (eventAdmin == null) {
log.error("eventadmin service NULL");
System.err.println("eventadmin service NULL");
}
} else {
System.out.println("Service Reference NULL");
log.error("Activator.start() Service Reference NULL");
}
}
Beim deklarativen Service ist die ServiceReference immer NULL.
Java:
IMyService service;
BundleContext context = Activator.getDefault().getBundle().getBundleContext();
ServiceReference reference = context.getServiceReference(IMyService.class.getName());
if (reference != null) {
service = (IMyService) context.getService(reference);
if (service != null) {
service.connect(connection);
}
} else {
log.error("Service nicht verfuegbar !");
}
DS Service component.xml
Java:
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="control.myservice">
<implementation class="control.service.MyService"/>
<service>
<provide interface="control.service.IMyService"/>
</service>
</scr:component>
Hat jemand eine Idee wieso es aus Eclipse herraus funktioniert aber nicht im feature-Product ?