7.15.2. Services

A bundle can dynamically register and unregister services. A service is identified by its interface and by arbitrary additional properties specified during service registration. The framework keeps track of available services and distributes events whenever service availability or service properties change.

interface BundleContext {

  ...

  // Support for service management
  ServiceRegistration registerService (String [] clazzes, Object service, Dictionary properties);
  ServiceRegistration registerService (String clazz, Object service, Dictionary properties);

  Filter createFilter (String filter) throws InvalidSyntaxException;
  ServiceReference [] getServiceReferences (String clazz, String filter) throws InvalidSyntaxException;
  ServiceReference [] getAllServiceReferences (String clazz, String filter) throws InvalidSyntaxException;

  ServiceReference getServiceReference (String clazz);
  Object getService (ServiceReference reference);
  boolean ungetService (ServiceReference reference);

  // Support for service lifecycle notifications
  void addServiceListener (ServiceListener listener, String filter) throws InvalidSyntaxException;
  void addServiceListener (ServiceListener listener);
  void removeServiceListener (ServiceListener listener);
}

Some services are standardized. Among framework related services are the Package Admin Service, Start Level Service, Permission Admin Service. Among general purpose services are the Log Service, HTTP Service, XML Parser Service.