# OSGi registerService



## PollerJava (13. Dez 2012)

Hi,

ich versteh diese Methode nicht, kann mir die jemand erklären, da steht in der JavaDoc BundleContext (OSGi Service Platform Release 4 Core Specification Version 4.3)
 folgendes: 

```
Parameters:
    clazz - The class under whose name the service can be located.
    service - The service object or a ServiceFactory object.
    properties - The properties for this service.
```


```
<S> ServiceRegistration<S>
	registerService(java.lang.Class<S> clazz, S service, java.util.Dictionary<java.lang.String,?> properties)
```

Wie soll ich da eine SerivceFactory anmelden können? Das geht ja nur, wenn die ServiceFactory auch ein Service ist!!?

lg


----------



## mtheiss (13. Dez 2012)

Hallo,

die von dir genannte Funktion dient nur der erleichterten Registrierung.
Das eigentliche Arbeitspferd ist http://www.osgi.org/javadoc/r4v43/core/org/osgi/framework/BundleContext.html#registerService%28java.lang.String[],%20java.lang.Object,%20java.util.Dictionary%29

Gruss
Martin


----------



## PollerJava (13. Dez 2012)

Das ist schon klar, dass es da mehrere Methoden gibt, mir geht es aber genau um die eine, da steht im Kommentar, dass man eine ServiceFactory anlegen kann, zeig mal ein Beispiel, wie du das machen würdest!


----------



## mtheiss (2. Jan 2013)

Ich war "kurz" im Urlaub.

Wenn ich eine ServiceFactory nur unter einem Interface registriere, dann würde ich es so machen:


```
mFramework.getBundleContext().registerService(HttpService.class.getName(), new MyHttpServiceFactory(), null);
```

und 


```
public class MyHttpServiceFactory implements ServiceFactory<HttpService>
```


----------

