# Daten zwischen Plugins austauschen



## JasDA (28. Okt 2010)

Ich habe ein Haupt-Plugin, das von beliebigen anderen Plugins erweitert werden kann. Diese anderen Plugins benötigen Daten wie den eingeloggten User. Diese Daten sind alle im Activator des Haupt-Plugins enthalten. Nur wie greife ich auf den Activator zu?

Habe bis jetzt nur diese wie ich finde unschöne Lösung gefunden:


```
Bundle bundle = Platform.getBundle("de.test.plugin");
		String activator = (String)bundle.getHeaders().get(Constants.BUNDLE_ACTIVATOR);
		Class activatorClass = bundle.loadClass(activator);
		Method method = activatorClass.getMethod("getInstance");
		Object activatorInstance = method.invoke(null);
```


----------



## Gast2 (28. Okt 2010)

Als OSGi Service bereit stellen...


----------



## JasDA (29. Okt 2010)

Falls mal jemand vor dem gleichen Problem steht, die Lösung über OSGi Services funktioniert ausgezeichnet. In der Start-Methode des Activators den Service registrieren:


```
context.registerService(SessionHolder.class.getName(), sessionHolder, null);
```

SessionHolder ist ein Objekt der Klasse, in der ich Infos wie Username etc. halte. 

In anderen Plugins kann dann so auf die Instanz zugegriffen werden:

```
BundleContext context = Platform.getBundle(Activator.PLUGIN_ID).getBundleContext();
ServiceReference serviceReference = context.getServiceReference(SessionHolder.class.getName());
SessionHolder session = (SessionHolder) context.getService(serviceReference);
```


----------



## Gast2 (29. Okt 2010)

Über SpringDM kannst du auch deklarative OSGi-Service machen


----------



## Wildcard (2. Nov 2010)

SirWayne hat gesagt.:


> Über SpringDM kannst du auch deklarative OSGi-Service machen



Dafür brauchst du kein Spring DM, das geht schon out-of-the-box dank equinox.ds


----------

