Discovery:
One of the main functions done by the Provisioning server is to
discover a client service and make it available to a device.
Discovery is the process by which client devices discover the
services that are advertised on the provisioning server. The
discovery process will:
- determine the characteristics of the device of the target user
- use the provisioning API to generate URIs for the target device that it can subsequently use to initiate delivery of bundles
- use the repository API to query the repository and build lists of suitable bundles that can be delivered.
There are different ways by which the discovery process can be
accomplished; the most common among them is the browser based
discovery. Here a web based servlet/JSP website is created and
dedicated to provide discovery services. The actual discovery is
done by a servlet that is registered with the provisioning
server as a named URL using servlet mapping so that any
discovery request made to the provisioning server can be handled
by the servlet. The provisioning API provides an interface named
javax.provisioning.ProvisioningContext which can be used by the
developer to find the system capabilities of the system making
the request. The provisioning context is available as a
attribute in the ServletConfig of the named servlet. The
ProvisioningContext is useful in getting device information like
the client platform, memory available, preferred locales and the
network address of the device.
Based on the information gathered the servlet makes a call to
the registry of client services and determines the services that
can be made available to this client device and then displays
the list to the client.
Other forms of discovery that can be used are technologies like
SMS, MMS, and SMTP. Here a notification is sent to the client
device with a link to the client application of interest. The
client device may at its discretion make a call to the service
and initiate delivery.
Repository:
The specification provides a Bundle Repository API which
provides access to the repository of client bundles and their
associated meta-data. The API supports the matching of bundle
requirements against device capabilities, and it allows other
search criteria to be implemented in Java.
The repository is where the all the client applications
registered with the provisioning server are stored. It contains
the details of all client applications with their multiple
versions and variants.
A client bundle may have the same ApplicationID but different
versions stored in the repository. Usually the latest version is
the one returned when a request is made. However the Bundle
Repository API has methods to download versions other than the
latest one. Added to this, a client bundle may have multiple
versions and each version may have multiple variants. Variants
are applications with the same ApplicationID and version but
with different requirements. Examples of variants are
applications for different screen sizes or locales.
The Bundle Repository API has an important method Collection
getBundlesFor(Capabilities capabilities, List matchpolicies);
The method returns a collections of BundleDescriptor objects
that match the capabilities provided. matchPolicies is a list of
objects implementing the MatchPolicy interface. They are used to
filter the Collection. Capabilities may be null, in which case
no filtering is done based on matching bundle requirements
against capabilities. MatchPolicies may also be null, in which
case no filtering is done based on MatchPolicy objects.
Therefore, if both arguments are null, the method will return
all bundles in the repository.
The Delivery:
Discovery helps in discovering the service after which the next
step is for the client to choose the service and allow it to be
delivered to the client device. The discovery process produces a
list of allowed URI's that are displayed to the client device.
The URI is provided by the FullfillmentTask.getDeliveryURI()
method. The FullfillmentTask does the job of delivering a
particular client bundle to a particular user using the
specified provisioning model.
Each Fullfillment task is uniquely identified by a fulfillment
ID string. After initial creation of a fulfillment task to
deliver a client bundle, the provisioning framework is
responsible for maintaining fulfillment tasks across delivery
interactions with the provisioning server. The provisioning
server must ensure that the fulfillment ID is unique for every
new fulfillment task created by the provisioning developer.
New on the Java Boutique:
New Review:
Time Management Made Easy with the Quartz Enterprise Job Scheduler
Why not just use the Java timer API? This open source scheduling
API boasts simplicity, ease-of-integration, a well-rounded feature
set, and it's free!
New Applet:
Reverse Complement
Reverse Complement is a simple applet that converts DNA or RNA
sequences into three useful formats.
Elsewhere on internet.com:
WebDeveloper Java
Lots of Java information on webdeveloper.com
WDVL Java
Thorough Java resource at the Web Developer's Virtual Library.
ScriptSearch Java
Hundreds of free Java code files to download.
jGuru: Your View of the Java Universe
Customizable portal with online training, FAQs, regular news updates, and tutorials.
|