Friday, March 22, 2013

OJDeploy issue in PS4: when building multiple webcenter portal applications

OJDeploy Issue:
I have noticed the above said issue, when I was building multiple webcenter portal applications through Hudson (which uses ojdeploy). I was using below ojdeploy script to build these applications
ojdeploy -profile A_portal -workspace A-portal.jws
(A_portal - deployment profile name in A portal application)

I have noticed that first portal application has correct autogenerated mar file. But, on second, third and other applications it is copying the files from first mar file.



Explanation with example:
1. I have 3 portal applications: A, B, C
2. Build first application with ojdeploy, the mar profile it generates is correct on it. What I mean by that is, the autogeneratedMar.mar file has all the files from the A portal application.
3. When I build B and C applications. The ojdeploy was copying the mar profile from A application to B and C. So, B and C has autogeneratedMar.mar with all the files from A.

Note: I was not able to reproduce this issue when I was using JDeveloper to build these applications.

To resolve this issue, I have created custom mar profile in each of the applications and selected below options in the MAR deployment profile:



User Metadata > Directories: 'oracle' checked.
HTML Root Dir for Portal > Directories: 'oracle' checked.
Updated each EAR deployment > Application Assembly: checked.




Build these applications using ojdeploy (same script). The problem was resolved.
Each application has their own mar files (example: A portal application has A.mar, B has B.mar and C has c.mar file). Each mar file has files from the same application.

But, when I deploy these application to the webcenter domain. The application was throwing below exception:
oracle.mds.core.MetadataNotFoundException: MDS-00013: no metadata found for metadata object "/oracle/webcenter/peopleconnections/profile/metadata/people-p
rofile-config.xml"

Oracle support team found that the adf-config.xml(inside .adf/META-INF) is the issue.

It appears that this is a subtle JDeveloper quirk. For example, open the MAR deployment profile (in Application Properties) and click 'User Metadata' > 'Directories'. It will have oracle / webcenter / portalapp / pages, pagetemplates tree. If I check the top-level 'oracle' node to automatically select all of the child nodes, the problematic entry will be written to the adf-config.xml:

However, if I select the nodes from the bottom of the tree (i.e. pages and pagetemplates), the adf-config.xml will be written correctly. The same holds for the 'HTML Root Dir for Portal'. I tested this from a number of angles, and it always works for me.

I am not sure if the custom mar file issue is reproducible in PS5 environment. I have faced this issue in PS4 environment. But, if you notice this problem you know what to do now.

No comments:

Post a Comment