com.buglabs.util
Interface RemoteOSGiServiceConstants


public interface RemoteOSGiServiceConstants

RemoteOSGiService provides transparent access to services on remote service platforms. It uses SLP as underlying discovery protocol. Local services can be registered for remoting, applications can register listeners for ServiceTypes to be informed whenever matching services have been discovered.

As soon as a service has been discovered and the listener has been informed, the application can fetch the service. In the default case, the service interface is transferred to the receiving peer together with an optional smart proxy class and optional injections. The service then builds a proxy bundle and registers it with the local framework so that the application can get a service reference as if the service was local. Internally, all methods of the service interface are implemented as remote method calls.

Services can define smart proxies to move some parts of the code to the client. This is done by an abstract class. All implemented method will be executed on the client, abstract methods will be implemented by remote method calls. Moving parts of the code to the client can be useful for saving service provider platform's resources.

Injections are used if the service interface uses classes as method arguments that are not expected to be present on client side. These classes will be automatically injected into the proxy bundle. The registrator can manually inject additional classes.

With version 0.5, there is also the possibility to register a service with the MIGRATE_BUNDLE policy. In this case, the bundle that provides the service is moved to the requesting peer.

Since:
0.1

Field Summary
static java.lang.String INJECTIONS
          For special purposes, the service can decide to inject other classes into the proxy bundle that is dynamically created on the client side.
static java.lang.String PRESENTATION
          property for registration of a service UI component that gived the user a presentation of the service.
static java.lang.String R_OSGi_REGISTRATION
          this property has to be set in order to release a service for remote access.
static java.lang.String SERVICE_PROXY_POLICY
          Deprecated. With the new model, service proxies is the only supported policy. Any value set to the R_OSGi_REGISTRATION policy will have the effect of SERVICE_PROXY_POLICY;
static java.lang.String SERVICE_URI
          the property key for the host name of the remote service.
static java.lang.String SMART_PROXY
          Can be set to use a smart proxy.
 

Field Detail

R_OSGi_REGISTRATION

static final java.lang.String R_OSGi_REGISTRATION
this property has to be set in order to release a service for remote access. Currently, the following two policies are supported.

Since:
0.5
See Also:
Constant Field Values

SERVICE_PROXY_POLICY

static final java.lang.String SERVICE_PROXY_POLICY
Deprecated. With the new model, service proxies is the only supported policy. Any value set to the R_OSGi_REGISTRATION policy will have the effect of SERVICE_PROXY_POLICY;
policy "service_proxy" means: dynamically build a proxy at client side. (default)

Since:
0.5
See Also:
Constant Field Values

SMART_PROXY

static final java.lang.String SMART_PROXY
Can be set to use a smart proxy. Smart proxies have to be abstract classes implementing the service interface. All abstract methods are implemented as remote calls, implemented methods remain untouched. This allows to perform some of the work on client side (inside of implemented methods). The value of this property in the service property dictionary has to be a the name of a class.

Since:
0.5
See Also:
Constant Field Values

INJECTIONS

static final java.lang.String INJECTIONS
For special purposes, the service can decide to inject other classes into the proxy bundle that is dynamically created on the client side. For instance, if types are use as arguments of method calls that are not part of the standard execution environment and the service does not want to rely on assumption that the corresponding classes are present on client side, it can inject these classes. The value of this property in the service property dictionary has to be an array of Class objects.

Since:
0.5
See Also:
Constant Field Values

PRESENTATION

static final java.lang.String PRESENTATION
property for registration of a service UI component that gived the user a presentation of the service. The value of the property in the service property dictionary has to be a name of a class implementing org.service.proposition.remote.ServiceUIComponent. When this property is set, the presentation is injected into the bundle and the R-OSGi ServiceUI can display the presentation when the service is discovered.

Since:
0.5
See Also:
Constant Field Values

SERVICE_URI

static final java.lang.String SERVICE_URI
the property key for the host name of the remote service. This constant is set by R-OSGi when a service is transferred to a remote peer. So to find out whether a service is provided by an R-OSGi proxy, check for the presence of this key in the service properties.

Since:
1.0
See Also:
Constant Field Values