Tutorials : Java Client Provisioning :

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.

How to Add Java Applets to Your Site

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.