ADF Mobile Configuration Service Usage

Overview 

ADF Mobile Configuration Service provides a mechanism for ADF Mobile Apps to update the end-points after they have been deployed to devices. This service allows any end-points configured in connections.xml to be updated on the server and have the deployed Apps uptake the changes without having to go through the normal App update process. All the end-points configured in the connections.xml like Web Service WSDL URI, REST Service URI, LoginServer URI, Remote URL etc can be updated using the Configuration Service.  

Scenarios 

1. Test to Production : When Apps are built they are configured to use dev/test end-points used by the developers for testing during development. Typically these end points are configured by administrators to point to production instances as part of application provisioning. Using Configuration Service allows mobile application administrators to configure the end-points a part of App provisioning.
2. Updating Configuration for Apps in production : In certain cases one may need to change the end points used by an App after deployment to a production environment due to maintenance or some other reason. Configuration Service  & checkForNewConfiguration() API can be used for the configuration changes to be propagated to the mobile apps in production.

Configuration Uptake Flow

First time App start up:

1. When Configuration Service is enabled in an ADF Mobile App, the user is prompted with a dialog to provide the credentials and URI for the Configuration Service. A default URL is populated for the Config Service URL field based on the seeded URL entry in adf-config.xml. User can change this to any end-point provided by the administrator

Config Service Login








































2. After the user enters the credentials and submits the FWK downloads connections.xml from the Configuration Service and restarts the App with the new configuration.

3. During the Application restart the FWK checks for the presence of the downloaded connections.xml and continues with the normal startup flow.

Configuration updates after deployment:  

Developers can use oracle.adfmf.framework.api.AdfmfContainerUtilities.checkForNewConfiguration() API to check if the connections.xml on Configuration Service has changed and if so, download a new version of the connections.xml file from the server. If a new version of the file is downloaded, the application is restarted with the new configuration. Developers can either invoke the API through some UI as shown in the attached sample app or do the check automatically as part of Application or Feature Lifecycle listeners at a certain event point in the App lifecycle.    






































Enabling Configuration Service

Configuration Service can be enabled using the  following configuration in adf-config.xml. This file is in <App root>/.adf/META-INF folder 

<adf:adf-properties-child xmlns="http://xmlns.oracle.com/adf/config/properties">
     <!-- Enable Configuration Service Check at Startup--> 
     <adf-property name="use-configuration-service-at-startup" value="true"/>
     <!-- Seeded Configuration Service URL -->
     <adf-property name="adfmf-configuration-service-seed-url" value="http://192.168.1.9:7101/ConfigService-ViewController-context-root/"/>
</adf:adf-properties-child>


Server Side Configuration Service Setup

Configuration Service can be implemented as a WebDav service or as a Service that accepts HTTP GET and returns connections.xml. The URL used by the Config Service Client is of the following format : <URL Configured in adf-config.xml>/<application bundle id>/connections.xml. The Config Service end-point can be secured using Basic-Auth or Basic-Auth over SSL.

Sample Details

The provided sample application has :
1. ADF MF App (ConfigServiceTest): This App has two features ; 1. remote URL feature pointing to google.com 2. Config feature with a page to check for config changes on the server. The App is configured to check for configuration during initial start-up. The URL used by the remote URL feature is configured in connections.xml. This URL can be changed in the Configuration Service App to point to say, for ex: http://m.bing.com and the mobile app can pick up this change using Config feature. 
2. J2EE app(ConfigService) that contains connections.xml at HTML root/<application bundle id> . This App does not have to be a J2EE App. In fact, it can be any endpoint that accepts HTTP GET and returns connections.xml using the specified URL format. 

Steps to try the sample:

1. Deploy the ADF Mobile App to a simulator or device.
2. Deploy the WAR file to a WLS instance(tested with integrated WLS shipped with JDev 11.1.2.3.0).

3. Start the mobile App. Enter the Config Service URL from step2 in the Config Service dialog displayed during the app startup as shown below. Make sure you change the host and port to point to the WLS instance used in step2.

Config Service Login








































4. The App will download the connections.xml from Config Service and restart.

5. When the App restarts Search feature will display google search page 

Config Service Login






































6. Change the remote URL in connections.xml in the Config Service App to http://m.bing.com. Make sure the changed end point is visible in the connections.xml by accessing the file from a browser
7. In the mobile app, access the Config feature and click on the "Check For Config Changes" button to detect the config change and download the new connections.xml.




































8. The App will restart after downloading the new configuration. This time the search feature will display the bing search page.  






































Config Service Login






































This approach can be used to change any end points used by the app like WSDL URI, REST Service URI, Login Server URI etc.

Comments:

Hi Srini,
Is the authentication a must for the configuration service? Can we use simple HTTP GET service without authentication like a public folder in DropBox?

Thanks!

Posted by guest on January 08, 2013 at 11:54 AM PST #

Yes, you can. Authentication is not a must for Configuration service.

Posted by guest on January 10, 2013 at 10:51 PM PST #

I have two questions:
(1)Since Authentication is optional, is there a way to hide the Username and Password fields on the Configuration popup widget? If yes, how can I do this?

(2) Is it possible to write a custom Configuration popup widget? If yes, how can I do this?

Posted by guest on April 30, 2013 at 01:41 PM PDT #

This is the new service came into the mobile sector.so this is the nice feature of the mobile.

Posted by guest on June 18, 2013 at 10:41 PM PDT #

Hi,
is the user credentials passed onto the remote url?

Posted by guest on July 03, 2013 at 11:15 PM PDT #

What is the username, password on startup?

Posted by guest on August 12, 2013 at 03:15 AM PDT #

Hi , now i try to deploy this example in my local
but i can't manage to update the "connection.xml" from remote site,
when mobile application is run pop up come out to keyin user name password and url i don't use basic authentication and i put my local url using "localhost", '127.0.0.1' , '192.168.1.1' but not successfully got return , just keep pop up screen to enter user name, password, url, after 5 time application auto shutdown,
so anyone help me for that
Thanks

Posted by guest on August 18, 2013 at 08:55 PM PDT #

Post a Comment:
  • HTML Syntax: NOT allowed
About

This blog is is dedicated to tips and tricks for developing, integrating, securing, and managing mobile applications using Oracle Mobile Platform. It is created and maintained by the Mobile Suite/Oracle ADF Mobile product development team.

Archive of past entries

Even More Mobile Development Blogs

Oracle A-Team Site - Mobile Related Entries

Code samples from the Community

Fusion Middleware Blogs

Search

Archives
« April 2014
SunMonTueWedThuFriSat
  
1
2
3
4
5
6
7
8
9
10
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
   
       
Today