With Oracle's stated direction of moving towards web based forms that utilize java (instead of Oracle Forms), it is becoming increasingly necessary for Oracle developers to add OAF/ADF Framework to their skill sets. Starting Release 12.2.X, Oracle has provided a new utility called adcgnjar, which allows developers to extend Oracle classes for OAF based forms. This article is geared towards developers with a working knowledge of OAF in previous releases, and explains how the utility is to be used in the new release.
Oracle has introduced a new utility called "adcgnjar" from R12.2 onwards.
This is required for deploying custom Oracle Application Framework (OAF) Controllers/View Object /Entity Object Extensions.
This utility is used when custom java files are placed in the standard location for custom applications namely $JAVA_TOP/<Company identifier>/*.
This utility generates and signs a file named customall.jar file containing the custom Java and BC4J code and extensions. This customall.jar file is included in the ebsProductManifest.xml so that the customall.jar will be in the CLASSPATH through the ebs-product shared library and available for the WebLogic server to pick up.
The adcgnjar utility is run on the command line without any parameters. When run, it will prompt for user name and password of the APPS user.
The utility performs the following steps:
1. Creates a temporary custom.zip file that contains all the directories under $JAVA_TOP
2. Generates and signs the customall.jar file with the contents of the custom.zip
When custom java files are placed in any other non-standard locations, for example,
• $JAVA_TOP/oracle/<company identifier >
• $JAVA_TOP/oracle/java/<company identifier>
• and so on
adcgnjar utility cannot be used. Instead, the custom jar file must be created manually and it must be made available for WebLogic to pick up.
Detailed steps for creating custom jar file manually are given below.
- Create a temporary custom.zip file which contains all the custom application's directories/files at the non-standard location. The commands are:
- cd $JAVA_TOP
- zip -r customprod.zip <directory list> where the <directory list> is the list of all the directory paths, relative to $JAVA_TOP, for custom application's java files at the non-standard location.
- Generate and sign the customprod.jar file.
Command: adjava oracle.apps.ad.jri.adjmx -areas $JAVA_TOP/customprod.zip -outputFile $JAVA_TOP/customprod.jar -jar $CONTEXT_NAME 1 CUST jarsigner -storePass <KeyStore Password> -keyPass <Key Password>
- Delete the temporary customprod.zip. Command: rm $JAVA_TOP/customprod.zip
- Include the entry for customprod.jar in the ebsProductManifest.xml and bounce the web tier.
Below is a summary of steps to deploy custom OAF extensions:
- Run the adop prepare phase.
- Source the patch edition environment.
- For OA Extension Controller Java class file changes and BC4J XML file changes, copy the .class and .xml files to $JAVA_TOP/<Company identifier>/*.
- Run the adcgnjar utility
- For BC4J substitutions and JRAD XML file changes, copy the JPX and XML files to the $<CUSTOM>_TOP/mds directory, where $<CUSTOM>_TOP refers to your custom product top.
- Invoke the JPXImporter and XMLImporter utilities in the Patch file system to load the contents of the JPX and XML files to the MDS repository
- Run the adop cutover phase.
To ensure that the custom java extension files are synchronized between the Run and Patch file systems the next time you run the adop prepare phase, You should add entries for all your custom files to the custom synchronization driver file located at $APPL_TOP_NE/ad/custom/adop_sync.drv .The adop utility uses this driver file to synchronize files between the run file system and the patch file system.
Add your entries in the section marked by the '#Begin Customization' and '#End Customization' comments.
When adding your entries, follow the syntax of the examples provided in the
%s_adtop%/admin/template/adop_sync_drv.tmp template file. For example, if you have
custom java class files under the $JAVA_TOP/<Company identifier>/* directory, and if all the files under this directory need to be synchronized between the patch file system and the run file system, then add the following entry in the custom synchronization driver file:
rsync -zr %s_current_base%/EBSapps/comn/java/classes/<Company identifier> %s_other_base%/EBSapps/comn/java/classes
Any paths you include in your entries should be specified relative to s_current_base
Following the steps above will ensure that all OAF customizations are made correctly as per Oracle guidelines.