public interface ApplicationContext
ApplicationContext is the access point for an OSGi-aware application
to the features of the OSGi Service Platform. Each application instance will
have its own ApplicationContext instance, which will not be reused
after destroying the corresponding application instance.
Application instances can obtain their ApplicationContext using the
Framework.getApplicationContext(Object) method.
The lifecycle of an ApplicationContext instance is bound to the
lifecycle of the corresponding application instance. The
ApplicationContext becomes available when the application is started
and it is invalidated when the application instance is stopped (i.e. the
"stop" method of the application activator object returned). All method calls
(except getApplicationId() and getInstanceId()) to an
invalidated context object result an IllegalStateException.
Framework| Modifier and Type | Method and Description |
|---|---|
void |
addServiceListener(ApplicationServiceListener listener,
java.lang.String referenceName)
Adds the specified
ApplicationServiceListener object to this
context application instance's list of listeners. |
void |
addServiceListener(ApplicationServiceListener listener,
java.lang.String[] referenceNames)
Adds the specified
ApplicationServiceListener object to this
context application instance's list of listeners. |
java.lang.String |
getApplicationId()
This method return the identifier of the corresponding application type.
|
java.lang.String |
getInstanceId()
This method returns the identifier of the corresponding application
instance.
|
java.util.Map |
getServiceProperties(java.lang.Object serviceObject)
Application can query the service properties of a service object it is
bound to.
|
java.util.Map |
getStartupParameters()
Returns the startup parameters specified when calling the
org.osgi.service.application.ApplicationDescriptor#launch(Map)
method. |
java.lang.Object |
locateService(java.lang.String referenceName)
This method returns the service object for the specified
referenceName. |
java.lang.Object[] |
locateServices(java.lang.String referenceName)
This method returns the service objects for the specified
referenceName. |
ServiceRegistration |
registerService(java.lang.String[] clazzes,
java.lang.Object service,
java.util.Dictionary properties)
Registers the specified service object with the specified properties
under the specified class names into the Framework.
|
ServiceRegistration |
registerService(java.lang.String clazz,
java.lang.Object service,
java.util.Dictionary properties)
Registers the specified service object with the specified properties
under the specified class name with the Framework.
|
void |
removeServiceListener(ApplicationServiceListener listener)
Removes the specified
ApplicationServiceListener object from this
context application instance's list of listeners. |
void addServiceListener(ApplicationServiceListener listener, java.lang.String referenceName) throws java.lang.IllegalArgumentException
ApplicationServiceListener object to this
context application instance's list of listeners. The specified
referenceName is a reference name specified in the descriptor of
the corresponding application. The registered listener will only
receive the ApplicationServiceEvents related to the referred
service.
If the listener was already added, calling this method will
overwrite the previous registration.
listener - The
ApplicationServiceListener to be
added. It must not be nullreferenceName - the reference name of a service from the descriptor
of the corresponding application. It must not be null.java.lang.IllegalStateException - If this context application
instance has stopped.java.lang.NullPointerException - If listener or
referenceName is nulljava.lang.IllegalArgumentException - If there is no service in the
application descriptor with the specified referenceName.void addServiceListener(ApplicationServiceListener listener, java.lang.String[] referenceNames) throws java.lang.IllegalArgumentException
ApplicationServiceListener object to this
context application instance's list of listeners. The
referenceNames parameter is an array of reference name specified
in the descriptor of the corresponding application. The registered
listener will only receive the ApplicationServiceEvents
related to the referred services.
If the listener was already added, calling this method will
overwrite the previous registration.
listener - The
ApplicationServiceListener to be
added. It must not be nullreferenceNames - and array of service reference names from the
descriptor of the corresponding application. It must not be
null and it must not be empty.java.lang.IllegalStateException - If this context application
instance has stopped.java.lang.NullPointerException - If listener or
referenceNames is nulljava.lang.IllegalArgumentException - If referenceNames
array is empty or it contains unknown referencesvoid removeServiceListener(ApplicationServiceListener listener)
ApplicationServiceListener object from this
context application instance's list of listeners.
If listener is not contained in this context application
instance's list of listeners, this method does nothing.
listener - The
ApplicationServiceListener object to
be removed.java.lang.IllegalStateException - If this context application
instance has stopped.java.lang.String getInstanceId()
ApplicationContext as well.ApplicationHandle.getInstanceId()java.lang.String getApplicationId()
Note: this method can safely be called on an invalid
ApplicationContext as well.
ApplicationDescriptor.getApplicationId()java.lang.Object locateService(java.lang.String referenceName)
referenceName. If the cardinality of the reference is 0..n or
1..n and multiple services are bound to the reference, the service with
the highest ranking (as specified in its
Constants.SERVICE_RANKING property) is
returned. If there is a tie in ranking, the service with the lowest
service ID (as specified in its
Constants.SERVICE_ID property); that is, the
service that was registered first is returned.referenceName - The name of a reference as specified in a reference
element in this context application's description. It must not be
nullnull if
the reference cardinality is 0..1 or 0..n and no bound service is
available.java.lang.NullPointerException - If referenceName is
null.java.lang.IllegalArgumentException - If there is no service in the
application descriptor with the specified referenceName.java.lang.IllegalStateException - If this context application
instance has stopped.java.lang.Object[] locateServices(java.lang.String referenceName)
referenceName.referenceName - The name of a reference as specified in a reference
element in this context application's description. It must not be
null.null if the reference cardinality is 0..1 or 0..n and no
bound service is available.java.lang.NullPointerException - If referenceName is
null.java.lang.IllegalArgumentException - If there is no service in the
application descriptor with the specified referenceName.java.lang.IllegalStateException - If this context application
instance has stopped.java.util.Map getStartupParameters()
org.osgi.service.application.ApplicationDescriptor#launch(Map)
method.
Startup arguments can be specified as name, value pairs. The name must be
of type String, which must not be null or empty
String (""), the value can be any object
including null.
Map containing the startup arguments. It can
be null.java.lang.IllegalStateException - If this context application
instance has stopped.java.util.Map getServiceProperties(java.lang.Object serviceObject)
locateService or
locateServices methods.serviceObject - A service object the application is bound to. It
must not be null.java.lang.NullPointerException - if the specified serviceObject is
nulljava.lang.IllegalArgumentException - if the application is not bound to the
specified service object or it is not a service object at all.java.lang.IllegalStateException - If this context application
instance has stopped.ServiceRegistration registerService(java.lang.String[] clazzes, java.lang.Object service, java.util.Dictionary properties)
ServiceRegistration object is returned. The
ServiceRegistration object is for the private
use of the application registering the service and should not be shared
with other applications. The registering application is defined to be the
context application. Bundles can locate the service by using either the
BundleContext.getServiceReferences(String, String)
or BundleContext.getServiceReference(String)
method. Other applications can locate this service by using
locateService(String) or locateServices(String) method,
if they declared their dependence on the registered service.
An application can register a service object that implements the
ServiceFactory interface to have more
flexibility in providing service objects to other applications or
bundles.
The following steps are required to register a service:
service is not a ServiceFactory, an
IllegalArgumentException is thrown if service is not an
instanceof all the classes named.Dictionary (which may be null): a property named
Constants.SERVICE_ID identifying the
registration number of the service and a property named
Constants.OBJECTCLASS containing all the
specified classes. If any of these properties have already been specified
by the registering bundle, their values will be overwritten by the
Framework.ServiceEvent.REGISTERED is fired. This event
triggers the corresponding ApplicationServiceEvent to be
delivered to the applications that registered the appropriate listener.ServiceRegistration object for this registration is
returned.clazzes - The class names under which the service can be located.
The class names in this array will be stored in the service's
properties under the key
Constants.OBJECTCLASS. This parameter
must not be null.service - The service object or a ServiceFactory object.properties - The properties for this service. The keys in the
properties object must all be String objects. See
Constants for a list of standard
service property keys. Changes should not be made to this object
after calling this method. To update the service's properties the
ServiceRegistration.setProperties(Dictionary)
method must be called. The set of properties may be null
if the service has no properties.ServiceRegistration object for use
by the application registering the service to update the
service's properties or to unregister the service.java.lang.IllegalArgumentException - If one of the following is
true:
service is null.service is
not a ServiceFactory object and is not an instance of all
the named classes in clazzes.properties
contains case variants of the same key name.java.lang.NullPointerException - if clazzes is nulljava.lang.SecurityException - If the caller does not have the
ServicePermission to register the service for all the
named classes and the Java Runtime Environment supports
permissions.java.lang.IllegalStateException - If this ApplicationContext is no
longer valid.BundleContext.registerService(java.lang.String[],
java.lang.Object, java.util.Dictionary),
ServiceRegistration,
ServiceFactoryServiceRegistration registerService(java.lang.String clazz, java.lang.Object service, java.util.Dictionary properties)
This method is otherwise identical to
registerService(java.lang.String[], java.lang.Object, java.util.Dictionary)
and is provided as a convenience when service will only be
registered under a single class name. Note that even in this case the
value of the service's Constants.OBJECTCLASS property will be an
array of strings, rather than just a single string.
clazz - The class name under which the service can be located. It
must not be nullservice - The service object or a ServiceFactory object.properties - The properties for this service.ServiceRegistration object for use by the application
registering the service to update the service's properties or to
unregister the service.java.lang.IllegalArgumentException - If one of the following is
true:
service is null.service is
not a ServiceFactory object and is not an instance of the
named class in clazz.properties contains
case variants of the same key name.java.lang.NullPointerException - if clazz is nulljava.lang.SecurityException - If the caller does not have the
ServicePermission to register the service the named class
and the Java Runtime Environment supports permissions.java.lang.IllegalStateException - If this ApplicationContext is no
longer valid.registerService(java.lang.String[], java.lang.Object,
java.util.Dictionary)Copyright © OSGi Alliance (2000, 2018). All Rights Reserved. Licensed under the OSGi Specification License, Version 2.0