|
OSGi™ Service Platform Release 4 Version 4.1 |
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
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 destorying the corresponding application instace.
Application instances can obtain their ApplicationContext
using the Framework.getApplicationContext(java.lang.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
Method Summary | |
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 correspondig application type. |
java.lang.String |
getInstanceId()
This method returns the identifier of the corresponding application instace. |
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 ApplicationDescriptor.launch(java.util.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 instances's list of listeners. |
Method Detail |
public 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 ApplicationServiceEvent
s realted to the referred service.
If the listener
was already added, calling this method will overwrite the previous
registration.
- Parameters:
listener
- The ApplicationServiceListener
to be added. It must
not be null
referenceName
- the reference name of a service from the descriptor of the corresponding
application. It must not be null
.
- Throws:
java.lang.IllegalStateException
- If this context application instance has stopped.
java.lang.NullPointerException
- If listener
or referenceName
is null
java.lang.IllegalArgumentException
- If there is no service in the
application descriptor with the specified referenceName
.
public 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 ApplicationServiceEvent
s realted to the referred
services.
If the listener
was already added, calling this method will overwrite the previous
registration.
- Parameters:
listener
- The ApplicationServiceListener
to be added. It must not
be null
referenceNames
- and array of service reference names from the descriptor of the corresponding
application. It must not be null
and it must not be empty.
- Throws:
java.lang.IllegalStateException
- If this context application instance has stopped.
java.lang.NullPointerException
- If listener
or referenceNames
is null
java.lang.IllegalArgumentException
- If referenceNames
array is empty or it
contains unknown references
public void removeServiceListener(ApplicationServiceListener listener)
ApplicationServiceListener
object from this
context application instances'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.public java.lang.String getInstanceId()
ApplicationContext
as well.
ApplicationHandle.getInstanceId()
public java.lang.String getApplicationId()
Note: this method can safely be called on an invalid
ApplicationContext
as well.
ApplicationDescriptor.getApplicationId()
public 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 applications'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.public java.lang.Object[] locateServices(java.lang.String referenceName)
referenceName
.
referenceName
- The name of a reference as specified in a reference element in
this context applications'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.public java.util.Map getStartupParameters()
ApplicationDescriptor.launch(java.util.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.public 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 null
java.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.public 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(java.lang.String, java.lang.String)
or
BundleContext.getServiceReference(java.lang.String)
method. Other applications
can locate this service by using locateService(String)
or locateServices(String)
method, if they declared their dependece 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(java.util.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 null
java.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
,
ServiceFactory
public ServiceRegistration 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 null
service
- 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 null
java.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)
|
OSGi™ Service Platform Release 4 Version 4.1 |
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |