Package org.eclipse.ecf.osgi.services.remoteserviceadmin

# Interface IHostContainerSelector

All Known Implementing Classes:
  `HostContainerSelector`

public interface IHostContainerSelector
Host container selector service contract. When an ECF RemoteServiceAdmin instance is asked to import a service (i.e. via `RemoteServiceAdmin.exportService(ServiceReference, java.util.Map)` ), the RSA first gets an instance of this service via the service registry, and then uses it to select an array of ECF host container instances by calling selectHostContainers.

The `IRemoteServiceContainer` array returned is then used to actually export the remote service (typically via `IRemoteServiceContainerAdapter.registerRemoteService(String[], Object, java.util.Dictionary)`

If no other instances of this service have been registered, a default instance of `HostContainerSelector` will be used. Note that this default instance is registered with the lowest possible priority, so that if other `IHostContainerSelector` instances are registered, they will be preferred/used over the default.

## Method Summary

Modifier and Type
Method
Description
`IRemoteServiceContainer[]`
`selectHostContainers(ServiceReference serviceReference, Map<String,Object> overridingProperties, String[] exportedInterfaces, String[] exportedConfigs, String[] serviceIntents)`
Select host containers to use to export a remote service.

## Method Details

### selectHostContainers

IRemoteServiceContainer[] selectHostContainers(ServiceReference serviceReference, Map<String,Object> overridingProperties, String[] exportedInterfaces, String[] exportedConfigs, String[] serviceIntents) throws SelectContainerException
Select host containers to use to export a remote service.

Parameters:
  `serviceReference` - the service reference given by the `RemoteServiceAdmin.exportService(ServiceReference, java.util.Map)`
  `overridingProperties` - the map portion given by the `RemoteServiceAdmin.exportService(ServiceReference, java.util.Map)`
  `exportedInterfaces` - the exportedInterfaces (typically associated with `RemoteConstants.SERVICE_EXPORTED_INTERFACES` ). Will not be `null`.
  `exportedConfigs` - the exportedConfigs (typically associated with `RemoteConstants.SERVICE_EXPORTED_CONFIGS` ). May be `null`.
  `serviceIntents` - the service intents (typically associated with `RemoteConstants.SERVICE_EXPORTED_INTENTS` and `RemoteConstants.SERVICE_EXPORTED_INTENTS_EXTRA` ). May be `null`.
Returns:
  IRemoteServiceContainer[] of remote service containers that should be used to export the given remote service (typically via `IRemoteServiceContainerAdapter.registerRemoteService(String[], Object, java.util.Dictionary)` ). Will not be `null`, but may be empty array.
Throws:
  `SelectContainerException` - thrown if the host container selection or creation/configuration fails.
Since:
  2.0