Tuesday, July 21, 2009

MDS repository for ADF 11G

With Fusion Middleware 11G the MDS repository plays a important role for ADF customizations and SOA shared objects. In this blog I explain how you can create a MDS database repository, deploy customizations to this MDS database and what you can do with MDS in the Enterprise manager website.

First we need to download the RCU repository creation utility and install a MDS repository in a Oracle Database.
Use a sysdba account

We only have to select the Metadata Services and provide a prefix

Next we need to install Weblogic with the Soa, Webcenter or Application development runtime extension. This extension gives us the Enterprise Manager website where we can configure the MDS repository. Select your Weblogic domain and select the MDS menu option.

Register the just created MDS repository. In my case I will call this repository adf

The EM website automatically create a datasource which we can use later.

If we have an ADF application with customizations and we deploy this to the Weblogic Server then JDeveloper detects the MDS repository

JDeveloper automatically creates a new MDS partition and uses your ear deployment name as partition name. It also uses the just created datasource to fill the MDS database. Just press deploy

When we go back to the EM website we can see the just created MDS partition.

The EM website also provides MBeans with some MDS operations.

For example we can query the partitions of a MDS repository.
When we select our just deployed ADF application and go to the MDS menu option, we can administer the MDS partition of this application.

We can export the MDS customization and import this to a different Weblogic server which has the same ADF application.
At last we can take a look at the MDS repository, here we can see that all the customizations entries are registered in the database. But the customizations xml are still located on the server, a bit strange I would suspect that with a MDS repository in the database that everything is loaded in the database.


  1. Hi Edwin,

    I have religiously followed the steps and tried to replicate setting up of the MDS repository to the DB.However JDeveloper does not automatically detect the registered meta data repository nor am I able to connect the application to the repository after installation.I have found in oracle forums that it is necessary to add datasource name in adf-config.xml.Kindly comment

  2. I am facing an issue when running ant -f build.xml unDeployMDS.

    When it tries to connect to server,it times out after some 20 mins.

    I get output as
    [removeSharedData] SEVERE: Connection to the server timed out. Please check the server log for problems or increase the timeout value.
    [removeSharedData] ---->response code=-1, error:null

    I tried to ping the server. It is up and fine.
    I donot know how can I increase the timeout value of server.

    Is there something wrong in my setup.

    Please suggest.


  3. Hi Edwin,

    I want to set up a repository as described above.
    So i installed a linux-server, a database 11g and the grid control as described here

    Now i created a new WLS-Domain and followed your guide. But I don not have the menu "Metadata Repositories" as shown in your guide (pictore 4).

    Can you help me solving the problem.

    Greetings from germany.

  4. Hi,

    first install weblogic and ADF runtime as a addon.

    You got the EM website running, ( enable enterprise manager / JRF in the domain creation wizard after that you can add the mds

    if so you can select the domain in EM and check the menu.


  5. Hi Edwin,,,
    I am having the Jdeveloper in my local machine and soa is on some other server. So can I use the file Based MDS in this where I can access xsd's from server from my jdeveloper , if yes plz guide me

    1. Hi,

      No you can add a MDS database connection ( soa is not a file mds ) to the resource pallette , this way you can open it from there. or update adf-config.xml and add the connection to the soa server , then you also use this for jdeveloper soa compiler.

      better use local file mds and sync mds before deploying.


    2. Hi edwin.. ,

      Thank's for ur reply...

      Actually I am trying to deploy file base MDS into the server as same we used to do with DB MDS. Is it possible to use file based MDS into the server. Apart from that can u plz guide me "How to do Versioning in DB MDS " and "get notified if any changes made into the DB MDS". As I have done the versioning to DB MDS but don't know how to select the same XSD's from different versions of MDS.

    3. Hi,

      what FMW product are you using, mostly versioning is done by the FMW product like SOA Suite where you can promote and demote composites. SOA suite can only work with db mds , file mds does not support versioning.

      with db mds everything is in the database ,so query the mds tables.


    4. HI Edwin,

      I am using SOA suit,In my BPEL project trying to use DB MDS.
      "How to do Versioning in DB MDS " and "get notified if any changes made into the DB MDS". As I have done the versioning to DB MDS but don't know how to select the same XSD's from different versions of MDS through BPEL project .It is possible to make change in a single XSD and change version of that specific xsd only "

    5. Hi,

      From soa suite you can't access these versions. only promote or demote a composite. that why oracle uses db-mds. it is not for you to use.


    6. Hi Edwin,

      Thanks for ur confirmation as we can't access the various version of mds.It is mention in blow oracle site that mds provide " Isolate metadata changes" and "Support for external change detection based on polling"

      so can u please guide me how to achieve these two facility of MDS.


    7. Hi,

      Isolate metadata changes: A database-based MDS Repository has the capability to isolate metadata changes in a running environment and test them for a subset of users before committing them for all users.

      I think this is used in webcenter / ADF . This is not possible in SOA. In soa you can control this by invoking the default endpoint or version 1.0 etc.

      Support for external change detection based on polling: This allows one application to detect changes that another application makes to shared metadata. For example, if you have an application deployed to Managed Servers A and B in a cluster, and you modify the customizations for the application deployed to Managed Server A, the data is written to the database-based repository. The application deployed to Managed Server B uses the updated customizations. This supports high availability (in particular, active/active scenarios.)

      Also this is used in ADF and is low level implemented in the adf libraries.

      But you can do a lot in java not from soa . see this for java


    8. thanks edwin for all your valuable suggestion .... its help me really good.... :)