tag:blogger.com,1999:blog-10834641682242826132024-03-13T21:28:19.587-05:00@ADFAnonymoushttp://www.blogger.com/profile/17714330272325897750noreply@blogger.comBlogger23125tag:blogger.com,1999:blog-1083464168224282613.post-17869465804034715862015-06-24T23:21:00.002-05:002015-06-24T23:21:53.495-05:00Sharing ADF artifacts (part 1)Please read my blog at <a href="http://flexagon.com/2015/06/sharing-adf-artifacts-part-1/">http://flexagon.com/2015/06/sharing-adf-artifacts-part-1/</a><br />
<br />Anonymoushttp://www.blogger.com/profile/17714330272325897750noreply@blogger.com0tag:blogger.com,1999:blog-1083464168224282613.post-52480381930747051802015-04-30T22:26:00.002-05:002015-04-30T22:26:36.699-05:00Automate build process for Fusion Web applicationYou can read my blog on <a href="http://flexagon.com/">Flexagon.com</a>.<br />
<br />
<a href="http://flexagon.com/2015/04/automate-build-process-for-fusion-web-application/">http://flexagon.com/2015/04/automate-build-process-for-fusion-web-application/</a>Anonymoushttp://www.blogger.com/profile/17714330272325897750noreply@blogger.com0tag:blogger.com,1999:blog-1083464168224282613.post-52847872298701898582015-02-07T11:21:00.002-06:002015-02-07T11:21:32.462-06:00Multiple JDeveloper installations on your laptop For reasons described below, it will be nice to setup different workspace(different system and mywork folder).<br />
<ol>
<li>It is very much possible that you may have multiple JDeveloper versions installed on your workstation. For example, 11g, 12c and possibly more than one version for each. You would want to make sure that you are opening your applications in proper version of JDeveloper. </li>
<li>You may have different stream of code development in progress at the same time for your application and it will be nice to organize that in different folders. </li>
<li>Also, if you are coming from Eclipse background, you may be missing workspace concept which is default for eclipse.</li>
</ol>
Here is how you can do that.<br />
<br />
Create a short cut using something like this, which will create workspace for 12.1.3. <br />
<br />
<blockquote class="tr_bq">
C:\installs\oracle\jdev\jdev121300\jdeveloper\jdev\bin\jdev64W.exe -J-Dide.user.dir=D:\jdev121300\ws1</blockquote>
<br />
Or modify it for 12.1.2 as shown below.<br />
<blockquote class="tr_bq">
C:\installs\oracle\jdev\jdev121200\jdeveloper\jdev\bin\jdev64W.exe -J-Dide.user.dir=D:\jdev121200\ws1 </blockquote>
<br />
Be sure to import preferences from previous workspace, so that you do not have to re-configure jdeveloper preference. You will be prompted for this only first time when you start JDeveloper with specific shortcut. <br />
<br />
Now you can check out code in D:\jdev121<span style="color: red;"><b>3</b></span>00\ws1 and work with 12.1.3 and that will be independent of code checked out for 12.1.2 in D:\jdev121<span style="color: red;"><b>2</b></span>00\ws1. Note that folder names are mapped to jdeveloper version for easier identification. Anonymoushttp://www.blogger.com/profile/17714330272325897750noreply@blogger.com0tag:blogger.com,1999:blog-1083464168224282613.post-73826560513794923412015-02-01T11:59:00.000-06:002015-02-01T11:59:16.372-06:00JDeveloper external tool to clean classes folderJDeveloper <i>Clean All</i> command does not appear to be deleting contents of classes folder, this can lead to issues as you may be referencing old class (class file may have been refactored to other package). In this blog entry, i would describe steps to create external tool to delete classes folder. I will describe two options, 1) using cmd.exe and 2) using ant build file.<br />
<br />
<h4>
External tool (cmd.exe) to delete classes folder</h4>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-uro8Y_aKDu4/VM5pBCgaCUI/AAAAAAAAB2M/909duOkvZik/s1600/cmd_1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-uro8Y_aKDu4/VM5pBCgaCUI/AAAAAAAAB2M/909duOkvZik/s1600/cmd_1.png" height="240" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-tAsS6jJmFQQ/VM5pBfWrE8I/AAAAAAAAB2Q/VVfYrB4mNsI/s1600/cmd_2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-tAsS6jJmFQQ/VM5pBfWrE8I/AAAAAAAAB2Q/VVfYrB4mNsI/s1600/cmd_2.png" height="240" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-GJ9DqneN-kA/VM5pBcJcWkI/AAAAAAAAB2U/-ElIlS6pDyU/s1600/cmd_3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-GJ9DqneN-kA/VM5pBcJcWkI/AAAAAAAAB2U/-ElIlS6pDyU/s1600/cmd_3.png" height="240" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-PE4tviBfa5k/VM5pBzegcnI/AAAAAAAAB2o/x_LJE13r-nY/s1600/cmd_4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-PE4tviBfa5k/VM5pBzegcnI/AAAAAAAAB2o/x_LJE13r-nY/s1600/cmd_4.png" height="240" width="320" /></a></div>
<h4>
External tool (ant build file) to delete classes folder</h4>
<h4>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-MBw3R9mXiGQ/VM5o_Tq7O0I/AAAAAAAAB1o/Z3kp8i11BQE/s1600/ant_1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-MBw3R9mXiGQ/VM5o_Tq7O0I/AAAAAAAAB1o/Z3kp8i11BQE/s1600/ant_1.png" height="104" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-IwBUUyAwBUg/VM5o_eWZ4vI/AAAAAAAAB1s/YGzJ2zgflBo/s1600/ant_2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-IwBUUyAwBUg/VM5o_eWZ4vI/AAAAAAAAB1s/YGzJ2zgflBo/s1600/ant_2.png" height="240" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-3a6N2DI16AM/VM5o_gadRjI/AAAAAAAAB10/FnkX9cV_n8Y/s1600/ant_3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-3a6N2DI16AM/VM5o_gadRjI/AAAAAAAAB10/FnkX9cV_n8Y/s1600/ant_3.png" height="240" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-VI9DtwIZjDQ/VM5pAKeQsAI/AAAAAAAAB14/1Ku3F7gO7MY/s1600/ant_4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-VI9DtwIZjDQ/VM5pAKeQsAI/AAAAAAAAB14/1Ku3F7gO7MY/s1600/ant_4.png" height="240" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-idUV7EVUswg/VM5pAQqNRiI/AAAAAAAAB18/RAO8VmNppPI/s1600/ant_5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-idUV7EVUswg/VM5pAQqNRiI/AAAAAAAAB18/RAO8VmNppPI/s1600/ant_5.png" height="240" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-Tv9DNxop_bw/VM5pAgz5pZI/AAAAAAAAB2E/vRu1JiW5K1w/s1600/ant_6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-Tv9DNxop_bw/VM5pAgz5pZI/AAAAAAAAB2E/vRu1JiW5K1w/s1600/ant_6.png" height="240" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-bzIS7ZdO-Yc/VM5pAwwVK8I/AAAAAAAAB2A/_Smaqz39DeE/s1600/ant_7.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-bzIS7ZdO-Yc/VM5pAwwVK8I/AAAAAAAAB2A/_Smaqz39DeE/s1600/ant_7.png" height="240" width="320" /></a></div>
</h4>
<h4>
How to run external tool created above</h4>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-Lqh7wmfAhSw/VM5pB1jgnyI/AAAAAAAAB2c/-owtw8ND_v8/s1600/exttool_run.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-Lqh7wmfAhSw/VM5pB1jgnyI/AAAAAAAAB2c/-owtw8ND_v8/s1600/exttool_run.png" height="320" width="316" /></a></div>
<h4>
<br /></h4>
<h4>
<br /></h4>
<h4>
</h4>
<br />Anonymoushttp://www.blogger.com/profile/17714330272325897750noreply@blogger.com0tag:blogger.com,1999:blog-1083464168224282613.post-39961783959452221492014-10-11T19:23:00.004-05:002014-10-11T19:24:00.191-05:00Update af:table properties using SkinHere is how default table looks like with Row Banding Interval set to 1.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-4HA-sp96CVo/VDnJnAPmnsI/AAAAAAAABxk/7pBO44P-ZP8/s1600/201.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-4HA-sp96CVo/VDnJnAPmnsI/AAAAAAAABxk/7pBO44P-ZP8/s1600/201.png" height="130" width="640" /></a></div>
<br />
Now, let's apply skin changes (shown later) and we can change layout as shown below.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/--w5eKrrGF8c/VDnJwtAZ2CI/AAAAAAAABxs/0PH5_rtymdQ/s1600/202.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/--w5eKrrGF8c/VDnJwtAZ2CI/AAAAAAAABxs/0PH5_rtymdQ/s1600/202.png" height="156" width="640" /></a></div>
<br />
Notice, few very visible changes. Here is skin code for each change.<br />
<br />
Change Title to be centered.<br />
<blockquote class="tr_bq">
<b>af|column::column-header-cell-content {<br /> text-align: center; <br />}</b></blockquote>
<br />
Change Row banding color.<br />
<blockquote class="tr_bq">
<b>af|column::banded-data-cell {<br /> background-color: #DDD; <br />}</b></blockquote>
<br />
Change table row height.<br />
<blockquote class="tr_bq">
<b>af|table::data-row {<br /> height: 26px; <br />}</b></blockquote>
Anonymoushttp://www.blogger.com/profile/17714330272325897750noreply@blogger.com0tag:blogger.com,1999:blog-1083464168224282613.post-168820589547710962014-10-11T19:04:00.001-05:002014-10-11T19:06:45.210-05:00Dynamically applying Skin changes to ADF Application running in Weblogic ServerIn my previous blog, i explained how to dynamically apply skin changes to JDeveloper's Embedded WebLogic server. If you try to perform same steps to apply skin changes to application deployed on your Middleware environment, it will not work. This is due to this Note in Skin User Guide.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-VZIf8hWGZEs/VDnC3l6zuaI/AAAAAAAABxU/oxBS34a5PXI/s1600/101.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-VZIf8hWGZEs/VDnC3l6zuaI/AAAAAAAABxU/oxBS34a5PXI/s1600/101.png" height="132" width="640" /></a></div>
<br />
This is necessary as deploy skin changes to Skin Managed Bean, updates skin file in File System. And in most cases you will deploy .ear file in your Middleware environment. If it is necessary to apply (mostly in Development environment) skin changes dynamically, deploy your ear file in exploded format.<br />
<br />
For example, i have FusionHRDemo.ear file which has HRUI.war module. Before installing this application in WebLogic, i can explode this ear file using commands shown below.<br />
<br />
Create folder with same name as your EAR file. And cd in that folder.<br />
<blockquote class="tr_bq">
<b>mkdir FusionHRDemo.ear</b><br />
<b>cd FusionHRDemo.ear</b></blockquote>
Now, explode ear file first.<br />
<blockquote class="tr_bq">
<b>jar -xvf D:\jdevws\jdev121200\blog\mywork\FusionHRDemo\deploy\FusionHRDemo.ear</b></blockquote>
Now, we need to explode HRUI.war module as well. First create dummy folder and cd in that folder. Then we will rename this folder to HRUI.war. As we are already in ear folder, this will be created under it.<b> </b><br />
<blockquote class="tr_bq">
<b>mkdir war</b><br />
<b>cd war</b></blockquote>
Now extract HRUI.war module, which is in parent folder, so use .. notation.<br />
<blockquote class="tr_bq">
<b>jar -xvf ../HRUI.war</b></blockquote>
Now go back to parent folder and remove HRUI.war file and rename war folder to HRUI.war.<br />
<blockquote class="tr_bq">
<b>cd ..</b><br />
<b>del HRUI.war</b><br />
<b>move war HRUI.war</b></blockquote>
If you are using Linux, you can use matching shell commands.<br />
<br />
Now, you can install exploded ear folder using WebLogic Console or WLST. And running application will be able to accept dynamic skin changes using Skin Managed Bean. Anonymoushttp://www.blogger.com/profile/17714330272325897750noreply@blogger.com0tag:blogger.com,1999:blog-1083464168224282613.post-61458586778947916972014-10-11T18:44:00.002-05:002014-10-11T18:46:33.952-05:00Dynamically applying Skin changes to Application running in Embedded WeblogicIn my <a href="http://atadf.blogspot.com/2014/10/create-adf-skin-for-styling-your-adf.html" target="_blank">previous blog</a>, i explained how to build a Skin for ADF application. It is not very productive to build skin, deploy as ADF Library JAR and test in ADF application. Fortunately there are features to dynamically update skin file changes to running application.<br />
<br />
First prepare your ADF application to accept dynamic skin changes.<br />
<br />
Go to your Web Project's properties. Select ADF View. Check <b>Enable Runtime Skin Updates</b>. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-O-MN_s-Gxk8/VDm9AbKDElI/AAAAAAAABwM/O3Fo3kVmrok/s1600/1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-O-MN_s-Gxk8/VDm9AbKDElI/AAAAAAAABwM/O3Fo3kVmrok/s1600/1.png" height="285" width="400" /></a></div>
<br />
Go to Libraries and Classpath section of your Web project's properties. Add <b>ADF Faces JMX Runtime 11 </b>library.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-0RmKTN3XuII/VDm9VZtRPiI/AAAAAAAABwU/t1UGppZ6Dcs/s1600/2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-0RmKTN3XuII/VDm9VZtRPiI/AAAAAAAABwU/t1UGppZ6Dcs/s1600/2.png" height="400" width="273" /></a></div>
<br />
Modify web.xml file of your Web project with following properties set to true (<b>org.apache.myfaces.trinidad.CHECK_FILE_MODIFICATION</b>, <b>org.apache.myfaces.trinidad.DISABLE_CONTENT_COMPRESSION</b>). These both properties must be set to false for Production environment. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-Kk40x3mJd58/VDm9iVHKFLI/AAAAAAAABwc/E-yRB5wKhPg/s1600/3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-Kk40x3mJd58/VDm9iVHKFLI/AAAAAAAABwc/E-yRB5wKhPg/s1600/3.png" height="148" width="640" /></a></div>
<br />
Now we are ready to work on Skin changes. Start your application by running jsf page, wait till application is started and accessible in web browser.<br />
<br />
Now, start Skin editor. Open ADF Skin application previously created. (Note that we created ADF Skin application in previous blog and added ADF Library JAR from that project to our ADF application's web project).<br />
<br />
Run Deployment Profile for Skin project in Skin Editor (right click on Project - Deploy and then select Deployment Profile name). Now select <b>Deploy to ADF Skin Managed Bean</b> as deployment action.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-Jva3zQDAmiA/VDm_DcjmYwI/AAAAAAAABwo/fWvW1hlysIM/s1600/4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-Jva3zQDAmiA/VDm_DcjmYwI/AAAAAAAABwo/fWvW1hlysIM/s1600/4.png" height="298" width="400" /></a></div>
<br />
Click Next. Create connection to Embedded WebLogic server as shown below. You can click Test Connection to check if your connection information is valid or not.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-8QEwIiS_cpw/VDm_WyKDZUI/AAAAAAAABww/jrSgY2AdWkc/s1600/5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-8QEwIiS_cpw/VDm_WyKDZUI/AAAAAAAABww/jrSgY2AdWkc/s1600/5.png" height="313" width="400" /></a></div>
<br />
Click Find Running Applications, you should see your application's context root in Application Name drop down. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-_k8tv25A1fg/VDm_vPQoBoI/AAAAAAAABw4/wWPUjuBZ5RI/s1600/6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-_k8tv25A1fg/VDm_vPQoBoI/AAAAAAAABw4/wWPUjuBZ5RI/s1600/6.png" height="298" width="400" /></a></div>
<br />
Click Finish and watch logs in Deployment window.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-YeoKkH80ygE/VDnAsHr9CBI/AAAAAAAABxI/XZ07D9O_OcQ/s1600/8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-YeoKkH80ygE/VDnAsHr9CBI/AAAAAAAABxI/XZ07D9O_OcQ/s1600/8.png" height="177" width="400" /></a></div>
<br />
Let's make change to button text color and deploy skin again.<br />
<blockquote class="tr_bq">
<b>af|button {<br /> color: Aqua; <br />}</b></blockquote>
Once skin is deployed with this change, you should see that button color has changed from Red to Aqua.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-Qw4StmyYdhU/VDnAenHSlsI/AAAAAAAABxA/omrGkVf-8hE/s1600/7.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-Qw4StmyYdhU/VDnAenHSlsI/AAAAAAAABxA/omrGkVf-8hE/s1600/7.png" height="640" width="536" /></a></div>
<br />
<br />Anonymoushttp://www.blogger.com/profile/17714330272325897750noreply@blogger.com0tag:blogger.com,1999:blog-1083464168224282613.post-21576574363028801262014-10-11T18:20:00.000-05:002014-10-11T18:25:02.505-05:00Create ADF Skin for styling your adf applicationsFor styling ADF applications, you need to create Skin CSS file and associated trinidad configuration files. In this blog post, i will explain steps necessary to get started with ADF Skin.<br />
<br />
Download and install ADF Skin Editor from OTN.<br />
<br />
Start Skin Editor (skineditor.exe).<br />
<br />
Create new Skin Application. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-xxS3hd8tAZA/VDm1psE-TNI/AAAAAAAABvA/vcEmfhBorNM/s1600/1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-xxS3hd8tAZA/VDm1psE-TNI/AAAAAAAABvA/vcEmfhBorNM/s1600/1.png" height="298" width="400" /> </a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Make sure to target for particular version of your ADF application's Runtime environment. (Target Application Release) </div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-Pl8rLD2kIKc/VDm158shY4I/AAAAAAAABvI/stFMDPPbOGs/s1600/2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-Pl8rLD2kIKc/VDm158shY4I/AAAAAAAABvI/stFMDPPbOGs/s1600/2.png" height="298" width="400" /> </a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Create New Skin using Wizard.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-qn1HDHfxB0A/VDm2YP3sAwI/AAAAAAAABvQ/Vi_I1RCBPDQ/s1600/3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-qn1HDHfxB0A/VDm2YP3sAwI/AAAAAAAABvQ/Vi_I1RCBPDQ/s1600/3.png" height="298" width="400" /> </a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Select your base skin. You would start with skin provided by Oracle (Skyros, Fusion, Alta UI etc) and build styles specific to brand of your company. </div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-gzaBiMp6FSk/VDm2sohzctI/AAAAAAAABvY/lTWI0uw3t8o/s1600/4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-gzaBiMp6FSk/VDm2sohzctI/AAAAAAAABvY/lTWI0uw3t8o/s1600/4.png" height="298" width="400" /> </a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Now let's modify CSS file to update color of button. (It is not a good idea to change Layout of your ADF application using Skin, it will create issues).</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-gFyGUbnwl1s/VDm3QhGqigI/AAAAAAAABvg/q5Kx1TsEu6Q/s1600/5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-gFyGUbnwl1s/VDm3QhGqigI/AAAAAAAABvg/q5Kx1TsEu6Q/s1600/5.png" height="260" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Skin editor provides many features to control properties of various ADF components. For example, in this case we are changing color of Button text to Red. CSS code would look like below. </div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<blockquote class="tr_bq">
<div class="separator" style="clear: both; text-align: left;">
<b>af|button {<br /> color: red; <br />}</b></div>
</blockquote>
<div class="separator" style="clear: both; text-align: left;">
This is not quite CSS syntax, ADF framework will modify this at runtime to generate CSS file with <b>af_button</b> class with properties inherited from base skin and color value set to red. Please refer to Skin Editor documentation for more details.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Now, let's deploy this Skin for use by ADF application. This is done by creating ADF Library Jar file. </div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Go to Project Properties - Deployment for your Skin project. Create new Deployment Profile. Select ADF Library Jar File as Profile Type. </div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Run Deployment Profile (right click on Project - Deploy and then select Deployment Profile name.)</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-jLZvmi33yWQ/VDm5HIqsZPI/AAAAAAAABvs/YY80DpP4BN0/s1600/6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-jLZvmi33yWQ/VDm5HIqsZPI/AAAAAAAABvs/YY80DpP4BN0/s1600/6.png" height="298" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
This will create ADF Library JAR file. You can reference this file from your ADF application using Resources view. You can share ADF Library JAR file storing it on shared file system or by versioning it is SubVersion or other source control system. In my case, i have placed file in libraries sub-folder of my ADF Application and created File System connection to that folder. </div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<img alt="" height="288" src="data:image/png;base64,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" width="400" /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Now, Select your Web Project in Applications explorer in JDeveloper, right click on ADF Library in Resources and select Add to Project... </div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
This skin file is now available to your ADF application, but it is not yet configured to use it. You must configure trinidad-config.xml file to reference specific skin, othewise it will default to skyros, fusion etc depending on your ADF version.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Create trinidad-config.xml, if it's not present in WEB-INF folder. And modify it to refer to Skin you have created and added to this project. </div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-2t_4qngrC_s/VDm6cZzUfII/AAAAAAAABv4/Koz8n8aMK1I/s1600/7.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-2t_4qngrC_s/VDm6cZzUfII/AAAAAAAABv4/Koz8n8aMK1I/s1600/7.png" height="276" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
Now your application is ready with your custom skin file. Run and you will see button text color as Red.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-Athhvzr8bzo/VDm7DA78hCI/AAAAAAAABwA/dh5ZaVvIL9g/s1600/8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-Athhvzr8bzo/VDm7DA78hCI/AAAAAAAABwA/dh5ZaVvIL9g/s1600/8.png" height="380" width="400" /></a></div>
<br />
<br />
<br />Anonymoushttp://www.blogger.com/profile/17714330272325897750noreply@blogger.com1tag:blogger.com,1999:blog-1083464168224282613.post-88844886315166213532014-03-27T19:30:00.002-05:002014-03-27T19:31:09.315-05:00ADF User PreferencesADF Provides extension to <span style="background-color: white;">standard Java Preferences API and is maintained in MDS Repository. </span><br />
<span style="background-color: white;"><br /></span>
<span style="background-color: white;">You can reference following Javadoc and Blog:</span><br />
<ul>
<li><a href="http://docs.oracle.com/cd/E12839_01/apirefs.1111/e10686/oracle/adf/share/prefs/package-summary.html">http://docs.oracle.com/cd/E12839_01/apirefs.1111/e10686/oracle/adf/share/prefs/package-summary.html</a></li>
<li><a href="http://blog.whitehorses.nl/2012/07/10/saving-user-preferences-in-oracle-webcenter/">http://blog.whitehorses.nl/2012/07/10/saving-user-preferences-in-oracle-webcenter/</a></li>
</ul>
<div>
But this does not work in Plain ADF application and you will run into following exception.</div>
<blockquote class="tr_bq">
<span style="color: red;"><b>oracle.mds.exception.ReadOnlyStoreException: MDS-01273: The operation on the resource /oracle/adf/share/prefs/data/preferences.xml failed because source metadata store mapped to the namespace / DEFAULT is read only.</b></span></blockquote>
<div>
To resolve this issue, change your application's adf-config.xml file as highlighted below.</div>
<span style="background-color: white;"><br /></span>
<persistence-config><br />
<metadata-namespaces><br />
<span style="color: blue;"><namespace path="/oracle/adf/share/prefs" metadata-store-usage="MAR_TargetRepos"/></span><br />
<namespace path="/persdef" metadata-store-usage="MAR_TargetRepos"/><br />
</metadata-namespaces><br />
<metadata-store-usages><br />
<metadata-store-usage id="MAR_TargetRepos" deploy-target="true" default-cust-store="true"><br />
</metadata-store-usage><br />
</metadata-store-usages><br />
</persistence-config>Anonymoushttp://www.blogger.com/profile/17714330272325897750noreply@blogger.com0tag:blogger.com,1999:blog-1083464168224282613.post-45941144716546150372014-03-19T07:57:00.001-05:002014-03-19T07:59:31.399-05:00Using Transient Attribute on Business ComponentsThis is very simple task, but could be useful for developers who are new to ADF. You can add a Transient attribute that is derived from other attributes or from some other data source. Here are simple steps on how to do this and how to make sure that value for Transient Attribute gets updated when other attributes are changed.<br />
<br />
<ul>
<li>Create new attribute on Entity object.</li>
</ul>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-xxpxHgIL_6E/UymSwFaOiDI/AAAAAAAABow/EAgbRo_oxwo/s1600/Step1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-xxpxHgIL_6E/UymSwFaOiDI/AAAAAAAABow/EAgbRo_oxwo/s1600/Step1.png" height="142" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-4ayndHBhi-c/UymSwB-Z7cI/AAAAAAAABok/6hRvebF5_hY/s1600/Step2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-4ayndHBhi-c/UymSwB-Z7cI/AAAAAAAABok/6hRvebF5_hY/s1600/Step2.png" height="146" width="320" /></a></div>
<br />
<ul>
<li>It seems attribute is marked as persistent. So you will have to change it.</li>
</ul>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-Y11bCl5eJ00/UymSwHZ49dI/AAAAAAAABo4/6LjCF25XK04/s1600/Step3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-Y11bCl5eJ00/UymSwHZ49dI/AAAAAAAABo4/6LjCF25XK04/s1600/Step3.png" height="149" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-QBJFwpkQpC8/UymSxOWUSDI/AAAAAAAABpA/LHWcsall0PA/s1600/Step4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-QBJFwpkQpC8/UymSxOWUSDI/AAAAAAAABpA/LHWcsall0PA/s1600/Step4.png" height="159" width="320" /></a></div>
<br />
<ul>
<li>If you don't have Entity Java class and accessor methods, please generate it (see Java tab). Once you have get method for FullName, change as shown below.</li>
</ul>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-FpTf_YHui1I/UymSxWdMasI/AAAAAAAABo8/F8r9nVk1guE/s1600/Step5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-FpTf_YHui1I/UymSxWdMasI/AAAAAAAABo8/F8r9nVk1guE/s1600/Step5.png" height="214" width="320" /></a></div>
<br />
<ul>
<li>Add same attribute to your View Object as well, so that you can run BC Tester.</li>
</ul>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-nw73DFWi9A0/UymSzzZn9EI/AAAAAAAABpI/AxgJjEu2uAI/s1600/Step6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-nw73DFWi9A0/UymSzzZn9EI/AAAAAAAABpI/AxgJjEu2uAI/s1600/Step6.png" height="240" width="320" /></a></div>
<br />
<ul>
<li>As you navigate to rows, you will data change in FullName. But if you change FirstName of LastName, it is not reflected in FullName. You will need to specify Dependency on FirstName and LastName for FullName attribute as shown in next screenshot.</li>
</ul>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-Rp83yKVQjWc/UymS1HfqhMI/AAAAAAAABpU/8HTYXRAv88s/s1600/Step7.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-Rp83yKVQjWc/UymS1HfqhMI/AAAAAAAABpU/8HTYXRAv88s/s1600/Step7.png" height="240" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-Iu6YQ0NU-qM/UymS1YWmavI/AAAAAAAABpc/s0cRsHSkaR0/s1600/Step8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-Iu6YQ0NU-qM/UymS1YWmavI/AAAAAAAABpc/s0cRsHSkaR0/s1600/Step8.png" height="181" width="320" /></a></div>
<br />
<ul>
<li> Now as you change FirstName, you will see change in FullName immediately.</li>
</ul>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/--BW0_XsWyxY/UymS1XnD6YI/AAAAAAAABpg/Ba1tftzB_20/s1600/Step9.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/--BW0_XsWyxY/UymS1XnD6YI/AAAAAAAABpg/Ba1tftzB_20/s1600/Step9.png" height="240" width="320" /></a></div>
These same steps apply to View Object transient attributes also, except few minor differences.Anonymoushttp://www.blogger.com/profile/17714330272325897750noreply@blogger.com0tag:blogger.com,1999:blog-1083464168224282613.post-52313310636373851472014-03-15T09:07:00.002-05:002014-03-19T07:58:07.439-05:00Creating Transient View ObjectTransient View Objects are very useful to build data entry forms when you don't necessarily want to create instances of Entity based View Objects till later time. In my projects, i have always tried to use Transient View Objects instead of POJO Databeans to bind to UI components. I have also used such Transient View Objects to collect search terms, when not using Query component, then i create and apply View Criteria in my Application Module method based on data entered by User which is collected from Transient View object.<br />
<br />
Here is how you can create Transient View Object.<br />
<ul>
<li>Create New View Object, make sure to create View object in default views package. We will re-factor into different package later. This is done as JDeveloper at times creates Java files in wrong package otherwise.</li>
<li>Use consistent suffix for View Object Name to indicate that it is Transient View Object.</li>
<li>Select Programmatic option for Data Source in View Object wizard.</li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-U_2s4It48vQ/UyRdg5si1lI/AAAAAAAABns/oX7ED4Lkiyo/s1600/step1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-U_2s4It48vQ/UyRdg5si1lI/AAAAAAAABns/oX7ED4Lkiyo/s1600/step1.png" height="213" width="320" /></a></div>
<ul>
<li>Add attributes as needed.</li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-VIEiNFTFyRc/UyRdgxTc-XI/AAAAAAAABno/o6EvpOYeaVI/s1600/step2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-VIEiNFTFyRc/UyRdgxTc-XI/AAAAAAAABno/o6EvpOYeaVI/s1600/step2.png" height="213" width="320" /></a></div>
<ul>
<li>Make sure all Attributes are always updatable and set to be persisted. Also, Make sure to define a Primary Key attribute (one or more) for View object.</li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-oT01wQPHNow/UyRdhSdHfvI/AAAAAAAABn4/SyELP5E1CIs/s1600/step3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-oT01wQPHNow/UyRdhSdHfvI/AAAAAAAABn4/SyELP5E1CIs/s1600/step3.png" height="213" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-8XXJtLnx_NM/UyRdjGr8IBI/AAAAAAAABoE/o-2-3WcUeXY/s1600/step4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-8XXJtLnx_NM/UyRdjGr8IBI/AAAAAAAABoE/o-2-3WcUeXY/s1600/step4.png" height="213" width="320" /></a></div>
<ul>
<li>Finish View Object creation wizard.</li>
<li>Go to general tab, expand Tuning and Make sure No Rows is selected for Retrieve from the Database section.</li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-HPr0dJRNrbI/UyRdiFL1ZbI/AAAAAAAABn8/Fi-llcJcSBo/s1600/step5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-HPr0dJRNrbI/UyRdiFL1ZbI/AAAAAAAABn8/Fi-llcJcSBo/s1600/step5.png" height="224" width="320" /></a></div>
<ul>
<li>Save your work.</li>
<li>Refactor Transient View Object in to a different package of your choice. For example, views.trans package.</li>
<li>Open View Object's Java file, generate if you don't have it and implement beforeRollback and afterRollback methods as shown below.</li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-eLxgJUYmcKM/UyRdgS626cI/AAAAAAAABng/X_Wb5WxmDXw/s1600/TransientVOMethods.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-eLxgJUYmcKM/UyRdgS626cI/AAAAAAAABng/X_Wb5WxmDXw/s1600/TransientVOMethods.png" height="140" width="320" /></a></div>
<div>
<br /></div>
Anonymoushttp://www.blogger.com/profile/17714330272325897750noreply@blogger.com0tag:blogger.com,1999:blog-1083464168224282613.post-35555900150456185882013-12-11T06:35:00.001-06:002014-01-02T20:10:30.455-06:00Issue creating Connection Pool for Oracle on Glassfish3<br />
As part of ADF Essentials setup on Glassfish, you need to create JDBC Pool. This is documented on <a href="http://docs.oracle.com/middleware/1212/adf/ADFAG/ap_glassfish.htm#ADFAG20931">http://docs.oracle.com/middleware/1212/adf/ADFAG/ap_glassfish.htm#ADFAG20931</a>.<br />
<br />
First make sure that you copy ojdbc6.jar to your Glassfish servers's domain-home\lib folder.<br />
<br />
<span style="color: blue; font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">C:\glassfish3\bin>asadmin</span><br />
<span style="color: blue; font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">Use "exit" to exit and "help" for online help.</span><br />
<span style="color: blue; font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">asadmin> create-jdbc-connection-pool --datasourceclassname oracle.jdbc.pool.OracleDataSource --restype javax.sql.DataSource --property user=user1:password=welcome1:url=jdbc:oracle:thin:@localhost:1521:XE SampleDSPool</span><br />
<span style="color: blue; font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">remote failure: Invalid property syntax, missing property value: oracleInvalid property syntax, missing property value: oracle</span><br />
<span style="color: blue; font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">Usage: create-jdbc-connection-pool [--datasourceclassname=datasourceclassname] [--restype=restype] [--steadypoolsize=8] [--maxpoolsize=32] [--maxwait=60000] [--poolresize=2] [--idletimeout=300] [--initsql=initsql] [--isolationlevel=isolationlevel] [--isisolationguaranteed=true] [--isconnectvalidatereq=false] [--validationmethod=table] [--validationtable=validationtable] [--failconnection=false] [--allownoncomponentcallers=false] [--nontransactionalconnections=false] [--validateatmostonceperiod=0] [--leaktimeout=0] [--leakreclaim=false] [--creationretryattempts=0] [--creationretryinterval=10] [--sqltracelisteners=sqltracelisteners] [--statementtimeout=-1] [--statementleaktimeout=0] [--statementleakreclaim=false] [--lazyconnectionenlistment=false] [--lazyconnectionassociation=false] [--associatewiththread=false] [--driverclassname=driverclassname] [--matchconnections=false] [--maxconnectionusagecount=0][--ping=false] [--pooling=true] [--statementcachesize=0] [--validationclassname=validationclassname] [--wrapjdbcobjects=true] [--description=description] [--property=property] jdbc_connection_pool_id</span><br />
<span style="color: blue; font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">Command create-jdbc-connection-pool failed.</span><br />
<br />
This kept failing for me, as it seems to parse URL for properties as URL has : character. Modifying the command as shown below resolved the issue. Notice URL is not specified as URL="jdbc\:oracle\:thin\:@localhost\:1521\:XE".<br />
<br />
<span style="background-color: white; color: blue; font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">C:\glassfish3\bin>asadmin create-jdbc-connection-pool --datasourceclassname oracle.jdbc.pool.OracleDataSource --restype javax.sql.DataSource --property user=user1:password=welcome1:URL="jdbc\:oracle\:thin\:@localhost\:1521\:XE" SampleDSPool</span><br />
<span style="background-color: white; color: blue; font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">JDBC connection pool SampleDSPool created successfully.</span><br />
<span style="background-color: white; color: blue; font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">Command create-jdbc-connection-pool executed successfully.</span><br />
<br />
<br />Anonymoushttp://www.blogger.com/profile/17714330272325897750noreply@blogger.com0tag:blogger.com,1999:blog-1083464168224282613.post-29213881591522518672013-11-24T12:50:00.001-06:002014-01-02T20:10:43.965-06:00Getting Started with ADF MobileAt Fusion Development User Group even in Milwaukee, there was a general question on Getting Started with ADF Mobile. I am sure Google can find all this, but here is quick blog on Getting Started with ADF Mobile.<br />
<br />
<h2>
Development Environment</h2>
<div>
<ul>
<li><a href="http://www.oracle.com/technetwork/developer-tools/adf-mobile/downloads/index.html" target="_blank">Use JDeveloper 11.1.2.4 with ADF Mobile Extension</a></li>
<li>You must use Mac for iOS testing and development. iOS Simulator works fine for testing and debugging.</li>
<ul>
<li>Enroll in iOS developer program.</li>
</ul>
<li>Download and Install Android SDK for Android build and testing. </li>
</ul>
</div>
<h2>
Examples</h2>
<div>
<ul>
<li><a href="http://www.oracle.com/technetwork/developer-tools/adf/adf-mobile-samples-1865088.html" target="_blank">ADF Mobile extension comes with Pre-Built samples.</a></li>
<li><a href="https://java.net/projects/smuenchadf/pages/ADFMobile#ADF_Mobile" target="_blank">ADF Mobile Samples on java.net</a></li>
<li><a href="https://wikis.oracle.com/display/ADFMobileDesign/Home" target="_blank">ADF Mobile Design WIKI</a></li>
</ul>
</div>
<h2>
Learning Videos</h2>
<div>
<ul>
<li><a href="http://download.oracle.com/otn_hosted_doc/jdeveloper/academy/Developing%20Applications%20with%20ADF%20Mobile/player.html" target="_blank">Developing applications with ADF Mobile on ADF Academy </a></li>
<li><a href="http://www.youtube.com/watch?v=kn6HZaYxBCM" target="_blank">Introduction to ADF Mobile</a></li>
<li>Many more videos on <a href="http://www.youtube.com/channel/UClAYKxUUFbBb6QAWH_CXY6g" target="_blank">ADF Insider channel on Youtube</a></li>
</ul>
</div>
<h2>
Blogs</h2>
<div>
<ul>
<li><a href="https://blogs.oracle.com/mobile/" target="_blank">Oracle Blog on ADF Mobile</a></li>
<li><a href="http://www.ateam-oracle.com/?cat=1023" target="_blank">Oracle A Team on ADF Mobile</a></li>
<li><a href="https://pinboard.in/u:OracleADF/t:mobile" target="_blank">ADF Mobile pinboard</a></li>
</ul>
</div>
<div>
<br /></div>
Anonymoushttp://www.blogger.com/profile/17714330272325897750noreply@blogger.com0tag:blogger.com,1999:blog-1083464168224282613.post-83224211309312693072013-11-24T12:19:00.003-06:002013-11-24T12:38:52.293-06:00Java Source for JDK classes in JDeveloper 12cIf you try to open standard Java class from JDK in JDeveloper 12c, you will notice that it does not open Source.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-hLWJZYvvV1E/UpJAhWlJX5I/AAAAAAAABlo/tTNUf88Mrbo/s1600/NoJavaSource.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-hLWJZYvvV1E/UpJAhWlJX5I/AAAAAAAABlo/tTNUf88Mrbo/s1600/NoJavaSource.png" height="170" width="320" /></a></div>
<br />
This happens as there is no JDK 7 source included in default installation. You can see this by using <b>Tools </b>- <b>Manage Libraries</b> menu. Select <b>Java SE Definitions</b> tab, you will notice there is no <b>Source Path</b>.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-_erSPjS6QXE/UpJAhe3ycfI/AAAAAAAABls/VkXPYGfaAuM/s1600/MissingSourceInJavaSEDefinition.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-_erSPjS6QXE/UpJAhe3ycfI/AAAAAAAABls/VkXPYGfaAuM/s1600/MissingSourceInJavaSEDefinition.png" height="190" width="320" /></a></div>
<br />
You can first download JDK 7 Source from <a href="http://sourceforge.net/projects/jdk7src/files/jdk7u9/2012-10-27/" target="_blank">http://sourceforge.net/projects/jdk7src/files/jdk7u9/2012-10-27/</a>. Download <b>src-jdk.zip</b> file and place it in <b>oracle_common/jdk</b> folder as shown below.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-n_iCUqj-308/UpJAfF5beNI/AAAAAAAABl8/bkpp7fYeiyc/s1600/AddedSourceZipInJDeveloperInstallation.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-n_iCUqj-308/UpJAfF5beNI/AAAAAAAABl8/bkpp7fYeiyc/s1600/AddedSourceZipInJDeveloperInstallation.png" height="199" width="320" /></a></div>
<br />
Now go back to JDeveloper. Go to <b>Java SE Definitions </b>under <b>Tools </b>- <b>Manage Libraries</b>. Select 1.7.* definition under <b>User </b>(not under <b>Extension</b>), and add <b>src-jdk.zip</b> to<b> Source Path</b>. JDK definition under Extension is Read Only, but when you restart JDeveloper after this change, Source Path will be updated for Extension JDK as well.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-w08eiGwN54Q/UpJAfOF3i2I/AAAAAAAABlQ/_OJ4jypB58Q/s1600/AddJavaSourceForJavaSEDefinition.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-w08eiGwN54Q/UpJAfOF3i2I/AAAAAAAABlQ/_OJ4jypB58Q/s1600/AddJavaSourceForJavaSEDefinition.png" height="205" width="320" /></a></div>
<br />
Now restart JDeveloper. You will now see source for JDK 7 java classes.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-FW-mmcHRz2U/UpJAfJi75II/AAAAAAAABlU/-Uo3RgkaYnQ/s1600/JavaSource.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-FW-mmcHRz2U/UpJAfJi75II/AAAAAAAABlU/-Uo3RgkaYnQ/s1600/JavaSource.png" height="169" width="320" /></a></div>
<br />Anonymoushttp://www.blogger.com/profile/17714330272325897750noreply@blogger.com0tag:blogger.com,1999:blog-1083464168224282613.post-4141542008089101652013-10-08T20:58:00.000-05:002013-10-08T20:58:13.182-05:00Integrate Quartz with ADFIn this blog entry, I will explain how to use Quartz to execute Background Jobs, where Jobs will eventually execute ADF Application Module methods. <br />
<br />
I will be using JDBC Store for Quartz, which will allow me to execute jobs in Cluster environment. In addition, I have also included a Job Listener that will update job execution status in database table, which will help integrate with External Scheduler systems. Many companies have Enterprise Schedulers that control Jobs across various systems. Most of the time, these Enterprise Schedulers would call Shell scripts, and even if they can invoke Web Services, it is better to setup Asynchronous execution to avoid time outs. This approach will also be useful if you don't have an Enterprise Scheduler, in which case Quartz can act as your master scheduler.<br />
<br /><b>1. Install Quart Libraries (1.6.4) in JDeveloper</b><br />
<ul>
<li>Download - "<a href="https://drive.google.com/?tab=wo&urp=https://www.google.com/&authuser=0#folders/0B0Fc2vtigkOfdXZIam1sVU1YTGM" target="_blank">myextensionsV2.zip</a>". </li>
<li>Unzip downloaded myextensionsV2.zip in c:\temp. </li>
<li>Using command prompt, go to c:\temp\myextensions. </li>
<li>First set JDEVELOPER11_INSTALL_HOME environment variable, which should point to your JDeveloper installation. For example, set JDEVELOPER11_INSTALL_HOME=c:\jdeveloper</li>
<li>You can now run setup.bat file to install Jersey Library in your JDeveloper installation. </li>
</ul>
<br />
<b>2. Create Scheduler tables</b><br />
<ul>
<li>Download <a href="https://docs.google.com/file/d/0B0Fc2vtigkOfY3dfWmFKVFBKMTA/edit?usp=drive_web" target="_blank">quartz-base.sql</a> and <a href="https://docs.google.com/file/d/0B0Fc2vtigkOfZXhjSXRnSDBPd28/edit?usp=drive_web" target="_blank">quartz-myextension.sql</a>.</li>
<li>Create SCHEDULER user using welcome1 password.</li>
<li>Create Database Objects using quartz-base.sql and quartz-myextension.sql.</li>
<li>This will create necessary tables for Quartz and my extension table for Job Listener.</li>
</ul>
<b>3. Run JDeveloper Application</b><br />
<ul>
<li>Download - <a href="https://docs.google.com/file/d/0B0Fc2vtigkOfMVdzZk1aV2FJcW8/edit?usp=drive_web" target="_blank">Example3.zip</a></li>
<li>Unzip Example3.zip and Open using JDeveloper (11.1.1.7.0)</li>
<li>Perform <b>Make All </b>using <b>Build </b>menu.</li>
<li>Run <b>MyDummyServlet</b>. This is just to start Embedded WebLogic Server.</li>
<li>As Server starts, it will also start Quartz Scheduler, which is configured by <b>QuartzInitializerServlet </b>in web.xml. </li>
<li>When application and scheduler is started, you will see a new row in <b>SCHEDULER.MY_SCHEDULER_STATE</b> table.</li>
<li>Run <b>ExecuteJob.java</b>. This will schedule a Job in database, which will be picked up by running Quartz Scheduler in Embedded WebLogic Server. </li>
<li>You will notice output message in console.</li>
<li>While job is running, monitor <b>SCHEDULER.MY_JOB_LISTENER</b> table, you will notice State column value will change as Job State changes from Executing to Complete. </li>
</ul>
<b>4. Next Steps</b><br />
<ul>
<li>You can create proper implementation of ExecuteJob.java. For example, </li>
<ul>
<li>supply Input parameters to Job, using JobDataMap.</li>
<li>Poll MY_JOB_LISTENER for Status of Job - complete or error.</li>
<li>Create Shell script wrapper, which can be executed by External Scheduler.</li>
</ul>
<li>You can create generic implementation of AMInvokeJob, that can take Application Module Definition and Operation Name as input, to invoke any Application Module's method.</li>
</ul>
<br />Anonymoushttp://www.blogger.com/profile/17714330272325897750noreply@blogger.com11tag:blogger.com,1999:blog-1083464168224282613.post-91283039300979453972013-08-10T21:37:00.002-05:002015-01-23T18:37:13.590-06:00Create REST WebServices using BC4JJDeveloper 11.1.1.x and ADF does not provide much support for REST Services, but it does recognize JAX-RS annotations and help configure Jersey. Here are simple steps to create REST Service over ADF Business Components.<br />
<br />
<b>1. Create Application Structure</b><br />
Create Generic Application. Delete generated Project. Add Model Project and Web Project (without Faces). Create Connection (hrdb) to HR Schema.<br />
<br />
<b>2. Generate Business Components and Prepare Service API</b><br />
This is similar to what i did for SOAP Web Service Example.<br />
<br />
<b>3. Add dependency to Jersey & Jackson</b><br />
Add Jersey and Jackson libraries to Web Project.<br />
See my blog about Installing Jersey libraries for JDeveloper. Actually, i am just adding following jars to Project. <br />
<span style="font-family: "Courier New",Courier,monospace;"><i>jackson-all-1.9.11.jar, asm-3.1.jar, jersey-bundle-1.17.1.jar</i></span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-up-kn-p7Aws/Ugb0qtbgQAI/AAAAAAAABjI/qmathGr-R5g/s1600/AddJerseyJacksonLibs.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-up-kn-p7Aws/Ugb0qtbgQAI/AAAAAAAABjI/qmathGr-R5g/s1600/AddJerseyJacksonLibs.png" height="285" width="400" /></a></div>
<br />
<b>4. Create WebService POJO Class </b><br />
Create POJO class with necessary API method(s). This example is not showing any exception handling, but you can throw Checked Exception to indicate Validation, Application or System type error situations to client.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-XfeqsEvB9EM/Ugb0qaAMAzI/AAAAAAAABjE/EwObrwl3mfE/s1600/POJOServiceClass.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-XfeqsEvB9EM/Ugb0qaAMAzI/AAAAAAAABjE/EwObrwl3mfE/s1600/POJOServiceClass.png" height="320" width="400" /></a></div>
<br />
<b>5. Add annotations</b><br />
5.1 Add @Path("/hrservice") annotation to HRWebService Java class. Import "javax.ws.rs.Path", when prompted by JDeveloper.<br />
<br />
5.2 JDeveloper will provide a hint for you to configure web.xml. You will see a Yellow icon in line gutter next to @Path. Accept the hint and JDeveloper will configure web.xml for Jersey servlet.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-4S_RETESIgk/Ugb0qSoBFdI/AAAAAAAABjA/VW1UCLULsOA/s1600/ConfigureJersey.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-4S_RETESIgk/Ugb0qSoBFdI/AAAAAAAABjA/VW1UCLULsOA/s1600/ConfigureJersey.png" height="287" width="400" /> </a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-IDl3HIJlz9w/Ugb0r56-X-I/AAAAAAAABjs/96QXLyApFw0/s1600/webxmlconfiguration.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-IDl3HIJlz9w/Ugb0r56-X-I/AAAAAAAABjs/96QXLyApFw0/s1600/webxmlconfiguration.png" height="287" width="400" /></a></div>
<br />
5.3 Add "com.sun.jersey.api.json.POJOMappingFeature" init param for Jersey servlet in web.xml, value of this init param should be true. This will cause Jersey to use Jackson for generating JSON response. Default implementation (JAXB) has some issues, for example, it will return Object instead of Array if only one item is being returned in List.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-lbjTHXOEfZo/Ugb0sHr_ayI/AAAAAAAABjw/QV7Se5aR8tM/s1600/webxmlconfigurationforjackson.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-lbjTHXOEfZo/Ugb0sHr_ayI/AAAAAAAABjw/QV7Se5aR8tM/s1600/webxmlconfigurationforjackson.png" height="313" width="400" /></a></div>
<br />
<br />
5.4 Add GET annotation to getCountryList() method.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-K6a_AG_wm44/Ugb0re8qqLI/AAAAAAAABjY/Tu2hCrzx_w0/s1600/getannotationforpojo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-K6a_AG_wm44/Ugb0re8qqLI/AAAAAAAABjY/Tu2hCrzx_w0/s1600/getannotationforpojo.png" height="316" width="400" /></a></div>
<br />
<br />
<b>6. Add weblogic-application.xml</b><br />
ADF libraries are included by adding shared library in weblogic-application.xml. This is automatically done if you create Fustion application, otherwise you can add it manually.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-KXkg_LPX72A/Ugb0rWEVWuI/AAAAAAAABjc/zLO8F22CZNU/s1600/weblogicapplicationxml.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-KXkg_LPX72A/Ugb0rWEVWuI/AAAAAAAABjc/zLO8F22CZNU/s1600/weblogicapplicationxml.png" height="171" width="400" /></a></div>
<br />
<b>7. Test Web Service</b><br />
Right click Web Service in Application Navigator and select Run or Debug.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-GNpmiBslhh0/Ugb0rYrP-PI/AAAAAAAABjg/LNPJf3XsQcE/s1600/serviceresult.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-GNpmiBslhh0/Ugb0rYrP-PI/AAAAAAAABjg/LNPJf3XsQcE/s1600/serviceresult.png" height="275" width="400" /></a></div>
<br />
<br /> <br />
<br />
<br />Anonymoushttp://www.blogger.com/profile/17714330272325897750noreply@blogger.com4tag:blogger.com,1999:blog-1083464168224282613.post-74366630103164518522013-08-10T12:36:00.003-05:002013-08-10T12:36:38.110-05:00Installing Jersey on JDeveloper 11.1.1.x In order to create REST Services using JDeveloper, you will need to include Jersey jar files in your Projects. I guess you can create other implementations, but Jersey works just fine.<br />
<br />
I will be using Jersey 1.17.1, which works great with JDeveloper 11.1.1.x. I have downloaded <a href="http://repo1.maven.org/maven2/com/sun/jersey/jersey-archive/1.17.1/jersey-archive-1.17.1.zip" target="_blank">jersey-archive-1.17.1.zip</a> and <a href="http://repo1.maven.org/maven2/com/sun/jersey/jersey-bundle/1.17.1/jersey-bundle-1.17.1.jar" target="_blank">jersey-bundle-1.17.1.jar</a>. Ideally you just need <b>jersey-bundle-1.17.1.jar</b>, but it appears that we also need to include <b>asm-3.1.jar</b> from jersey-archive-1.17.1.zip file. <br />
<br />
You can just setup Jar files as dependencies on your Project, but it works best if you create a JDeveloper Library. You can install this library on your Developer machine as well as on your Build machine. <br />
<br />
Download - <a href="https://docs.google.com/file/d/0B0Fc2vtigkOfYUdtTEJ5d3RIWkE/edit?usp=sharing" target="_blank">My Extensions Zip Archive</a><br />
<br />
Unzip downloaded <b>myextensions.zip</b> in <b>c:\temp</b>. Using command prompt, go to <b>c:\temp\myextensions</b>. You can now run <b>setup.bat</b> file to install Jersey Library in your JDeveloper installation. You will need to set JDEVELOPER11_INSTALL_HOME environment variable, which should point to your JDeveloper installation.<br />
<br />
You can open setup.bat to see what it will copy to your JDeveloper installation. You can obviously modify / extend this to install other types of Libraries.<br />
<br />
Once you run setup.bat, start JDeveloper and see Library named My Jersey. (Tools - Manage Libraries).<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-tPkYQEZOg8s/UgZ334j-E9I/AAAAAAAABiU/H43solzaFaY/s1600/JerseyLibrary.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-tPkYQEZOg8s/UgZ334j-E9I/AAAAAAAABiU/H43solzaFaY/s1600/JerseyLibrary.png" height="251" width="400" /></a></div>
<br />Anonymoushttp://www.blogger.com/profile/17714330272325897750noreply@blogger.com0tag:blogger.com,1999:blog-1083464168224282613.post-39705354939447152362013-08-04T11:51:00.002-05:002015-01-23T18:36:48.448-06:00Create SOAP WebServices using BC4JADF Application Module can be enabled as Service Interface (SDO), but i take a different approach to this as shown below.<br />
<br />
<b>1. Create Application Structure</b> <br />
Create Generic Application. Delete generated Project. Add Model Project and Web Project (without Faces). Create Connection (hrdb) to HR Schema.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-izFlJzWM1Nc/Uf5-V1fflgI/AAAAAAAABgo/Ownbsy4Hf6g/s1600/Application_Structure.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-izFlJzWM1Nc/Uf5-V1fflgI/AAAAAAAABgo/Ownbsy4Hf6g/s1600/Application_Structure.png" height="197" width="400" /></a></div>
<b>2. Generate Business Components and Prepare Service API</b><br />
2.1 Generate ADF Business Components using JDevelolper Wizard. Create Application Module later, otherwise initial wizard adds many entries to Application Module's Data Model.<br />
2.2 Create simple POJO for Country object. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-ZyMpI7GsZCI/Uf5-Y-MheoI/AAAAAAAABhU/kE8G1UAx7AU/s1600/Generate_BC4J_Create_DTO_Service.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-ZyMpI7GsZCI/Uf5-Y-MheoI/AAAAAAAABhU/kE8G1UAx7AU/s1600/Generate_BC4J_Create_DTO_Service.png" height="256" width="400" /></a></div>
<br />
2.3 Create service method to return all Country objects. Expose it to Client Interface. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-j-D8op-OrVs/Uf5-V2kN0pI/AAAAAAAABgg/fzmHQjMK4hg/s1600/Create_Service_Method.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-j-D8op-OrVs/Uf5-V2kN0pI/AAAAAAAABgg/fzmHQjMK4hg/s1600/Create_Service_Method.png" height="400" width="361" /> </a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Using Application module XML Editor, add this service method to Client Interface (Java tab).</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-AD3HbUzb9RU/Uf5-Ws1W9iI/AAAAAAAABg8/tKA_VAISDqs/s1600/Add_to_client_interface.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-AD3HbUzb9RU/Uf5-Ws1W9iI/AAAAAAAABg8/tKA_VAISDqs/s1600/Add_to_client_interface.png" height="277" width="400" /></a></div>
<br />
<b>3. Create Web Service POJO class</b><br />
Create POJO class with necessary API method(s). This example is not showing any exception handling, but you can throw Checked Exception to indicate Validation, Application or System type error situations to client.<br />
<br />
Alternatively, you can also start by creating WSDL file to represent your Web Service. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-DeNzIQO2SBw/Uf5-WnrEMPI/AAAAAAAABgs/otDmk8XblWM/s1600/Create_WS_POJO_Class.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-DeNzIQO2SBw/Uf5-WnrEMPI/AAAAAAAABgs/otDmk8XblWM/s1600/Create_WS_POJO_Class.png" height="323" width="400" /></a></div>
<br />
<b>4. Generate SOAP Web Service from POJO</b><br />
Generate Web Service using JDeveloper wizard. This generates SOAP Web Service only with JDeveloper 11.1.1.x, hopefully future versions of JDeveloper will allow generation of REST Services.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-FsLRQ4MV-cI/Uf5-WhZ8pSI/AAAAAAAABgk/6cQQy5a28ms/s1600/Create_WS_Step1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-FsLRQ4MV-cI/Uf5-WhZ8pSI/AAAAAAAABgk/6cQQy5a28ms/s1600/Create_WS_Step1.png" height="400" width="362" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-UtiVPmNPmzA/Uf5-X6YiCPI/AAAAAAAABhE/lYEMlJ12XCE/s1600/Create_WS_Step2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-UtiVPmNPmzA/Uf5-X6YiCPI/AAAAAAAABhE/lYEMlJ12XCE/s1600/Create_WS_Step2.png" height="300" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-hewqg0WNvUQ/Uf5-Xj37_4I/AAAAAAAABhA/T9blFNXDSbA/s1600/Create_WS_Step3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-hewqg0WNvUQ/Uf5-Xj37_4I/AAAAAAAABhA/T9blFNXDSbA/s1600/Create_WS_Step3.png" height="300" width="400" /></a></div>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-V7cAiMpZlVQ/Uf5-YzjrbmI/AAAAAAAABhc/qmJJtw2LLg4/s1600/Create_WS_Step4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-V7cAiMpZlVQ/Uf5-YzjrbmI/AAAAAAAABhc/qmJJtw2LLg4/s1600/Create_WS_Step4.png" height="300" width="400" /></a></div>
<br />
Note annotations added by Wizard.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-WoXn6oAUZZw/Uf5-Y1KsLbI/AAAAAAAABhY/PTLFXlrr1jk/s1600/WS_Done.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-WoXn6oAUZZw/Uf5-Y1KsLbI/AAAAAAAABhY/PTLFXlrr1jk/s1600/WS_Done.png" height="232" width="400" /></a></div>
<br />
<b>5. Test Web Service</b><br />
Right click Web Service in Application Navigator and select Run or Debug.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-3-dkvLpunwo/Uf6AHWmDoeI/AAAAAAAABh4/V469xjMVlUU/s1600/Service_Test_Result.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-3-dkvLpunwo/Uf6AHWmDoeI/AAAAAAAABh4/V469xjMVlUU/s1600/Service_Test_Result.png" height="218" width="400" /></a></div>
<br />
<b>Why this approach?</b><br />
1. This approach allows for flexibility in exception handling, as you can control types of exception thrown to client. Service Generation approach from Application Module throws Runtime Exceptions which is seen as SOAP Fault by client and it does not have any useful information.<br />
2. You may want to control WSDL and / or Schema to confirm to your Enterprise Standards, which is possible only when using this approach.<br />
3. This approach is little bit clean, as Web Service and BC4J code is organized in separate projects. <br />
<br />
And, It is not at all difficult to generate Web Service from POJO with available Wizards. Anonymoushttp://www.blogger.com/profile/17714330272325897750noreply@blogger.com1tag:blogger.com,1999:blog-1083464168224282613.post-88954125640711651962013-06-30T12:04:00.001-05:002013-06-30T12:04:46.078-05:00Use of Date with ADFDate creates many confusion & bugs in our applications, some of which are only found when Day Light Savings time changes. :)<br />
<blockquote class="tr_bq">
There is fundamental issue with how we talk about Date. For example, my date is in Central Time or for this Location my Date is in Eastern Time. As we all know, Date is milliseconds representing GMT time & String value we see in Debugger or Logs is just String representation of Date with respect to some TimeZone. </blockquote>
Here is what i recommend for Date usage with ADF, some of which can very well apply to other frameworks as well.<br />
<br />
<h4>
1. Don't offset date value for Persistence</h4>
<br />
JDBC driver will transform value of Date is Server's Default TimeZone
for storing in Table Column. At times, we try to offset value of Date, so that when JDBC Driver creates String representation
using Server's Default TimeZone, it looks like GMT for example. This is
clever, but not a good idea.<br />
<br />
This approach can cause issues with Queries. It will also not represent values correctly on screen components. You can workaround these issues, but that's extra work that can be avoided, by accepting the fact that Date will be stored in Server's Default TimeZone.<br />
<br />
<h4>
2. Do not specify Date Format on Control Hints for Entity or View Object attributes </h4>
<br />
ADF does a good job of providing Control Hints that can be set on Business Components, but in this case I would recommend not setting any Format for Date on Entity and View Object. I have seen issues with Control Hints related to Date Format and more importantly it makes sense to control this based on User's Preferences / Locale.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-Sd2JL0Swry4/Uc8i_M02s9I/AAAAAAAABe8/cvim5HWG8bc/s800/formatOnEOVO.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-Sd2JL0Swry4/Uc8i_M02s9I/AAAAAAAABe8/cvim5HWG8bc/s800/formatOnEOVO.png" height="250" width="400" /></a></div>
<br />
<h4>
3. Create Session Scope variables for TimeZone & Date Format</h4>
<br />
Using Phase Listener, create Session Scope values for TimeZone and various Date & Time formats. You can read this values from User's Preference or derive it using any other data store.<br />
<br />
These can be used in UI pages with af:convertDateTime as shown below.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-F9QyZcyZ-Jo/Uc8i_NdNAlI/AAAAAAAABfI/LM2I0eKdGOM/s581/formatOnafConvertdatetime.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-F9QyZcyZ-Jo/Uc8i_NdNAlI/AAAAAAAABfI/LM2I0eKdGOM/s581/formatOnafConvertdatetime.png" height="105" width="400" /></a></div>
<br />
<h4>
4. Specify TimeZone in trinidad-config.xml</h4>
<div class="separator" style="clear: both; text-align: center;">
</div>
If you set value of time-zone in trinidad-config.xml, it will apply to all Date components for display and input processing. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-JR-b2cjhrr0/Uc8jAGmVOyI/AAAAAAAABfQ/KCDpTCTItS4/s518/trinidad-config.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-JR-b2cjhrr0/Uc8jAGmVOyI/AAAAAAAABfQ/KCDpTCTItS4/s518/trinidad-config.png" height="117" width="400" /></a></div>
<br />
<h4>
5. Specify Pattern on af:date
Specify different TimeZone if necessary on af:date
</h4>
If you want to display particular Date value in a different TimeZone, you can indicate that on af:convertDateTime. For example, Delivery Date would make sense to be displayed in TimeZone of Delivery Location.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-1NtwonLbxWI/Uc8i_AG45eI/AAAAAAAABfE/UWzdU9OPZpY/s559/timezoneOnafConvertdatetime.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-1NtwonLbxWI/Uc8i_AG45eI/AAAAAAAABfE/UWzdU9OPZpY/s559/timezoneOnafConvertdatetime.png" height="81" width="400" /></a></div>
<br />Anonymoushttp://www.blogger.com/profile/17714330272325897750noreply@blogger.com0tag:blogger.com,1999:blog-1083464168224282613.post-7167725101736387802013-06-22T17:45:00.002-05:002013-06-23T03:51:16.626-05:00af:poll not workingADF Faces provides <a href="http://docs.oracle.com/cd/E17904_01/apirefs.1111/e12419/tagdoc/af_poll.html" target="_blank">poll </a>component, it's description & sample use cases are documented on Tag Documentation as shown below.<br />
<blockquote class="tr_bq">
The poll component delivers PollEvents to the server at fixed intervals.
This can be used either for steady updates, or to deliver a heartbeat
to keep a user logged in, or to warn a user about to be logged out (for
some examples).</blockquote>
One classic use of Poll component would be to keep User Session active as long as browser window is open. In this case, you will set Poll Interval (<b>interval</b>) and dummy <b>pollListener</b>. Poll Listener can be empty method, it does not have to do anything. Poll Interval should be less than HTTP Session Timeout. HTTP Session Timeout is setup in web.xml.<br />
<br />
Such use of Poll component fails to keep User Session active, after upgrading from 11.1.1.3. This is due to new attribute <b>timeout </b>for <b>af:poll</b>, value for which defaults to 10 minutes (This property is added with 11.1.1.4). So if user does not perform any activity on Keyboard or Mouse for 10 minutes, Poll component will stop delivering any Poll Events. If you are using af:poll to keep User Session (by sending regular heartbeat) active, add timeout property to af:poll with very high value to avoid stopping Poll Events. Anonymoushttp://www.blogger.com/profile/17714330272325897750noreply@blogger.com2tag:blogger.com,1999:blog-1083464168224282613.post-61147816475156364382013-06-16T12:37:00.000-05:002013-06-16T12:40:18.261-05:00How to define List of Values for View Object attributeThis is very powerful feature of ADF and it often goes unnoticed. You can define a List of Values for View Object attribute including component types that you want to use by default. Once this setup is done, when you Drop View Object on your page, it will create List components instead of simple text box.<br />
<br />
Let's define Department List of Values for "DepartmentId" attribute of EmployeeVO. We have "EmployeeVO" (Default VO for Employee table) and "DeparmentsLOVVO" (has Id & Name for all Deparments).<br />
<br />
First open EmployeeVO and Select DepartmentId attribute.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-nHGQSxEAKgg/Ub31lJ63THI/AAAAAAAABd8/aevKq1xWxX8/s1600/define_lov_1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-nHGQSxEAKgg/Ub31lJ63THI/AAAAAAAABd8/aevKq1xWxX8/s1600/define_lov_1.png" height="293" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Expand List of Values:DepartmentId and click Green Plus icon. You will see "Create List of Values" dialog like one shown below. </div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-of8zWzLeRgA/Ub31lDjB-yI/AAAAAAAABdw/Nm2TId_53x0/s1600/define_lov_2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-of8zWzLeRgA/Ub31lDjB-yI/AAAAAAAABdw/Nm2TId_53x0/s1600/define_lov_2.png" height="400" width="398" /></a></div>
<br />
This is not very straightforward User Interface. Now you can select where your List Data is coming from in "List Data Source:", if you don't have one, click Green Plus icon to create one, see screen shot below.<br />
<br />
Make sure that you name your view accessor appropriately. See i am using "VA" suffix.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-Fp1oCK9W-rI/Ub31lC7QftI/AAAAAAAABeI/_XUJiAIXlaY/s1600/define_lov_3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-Fp1oCK9W-rI/Ub31lC7QftI/AAAAAAAABeI/_XUJiAIXlaY/s1600/define_lov_3.png" height="398" width="400" /></a></div>
<br />
Select "List Attribute" now. This is the value from your List Data Source that will be stored in your View Object attribute when User performs selection on UI.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-HJU7he_dzB8/Ub31l46MFlI/AAAAAAAABeE/gmg7dMspujA/s1600/define_lov_4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-HJU7he_dzB8/Ub31l46MFlI/AAAAAAAABeE/gmg7dMspujA/s1600/define_lov_4.png" height="400" width="398" /></a></div>
<br />
You can use different value to display on your List component than what is being stored in your Attribute. This is done from UI Hints tab.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-wckSCxzxf1k/Ub31mLQVmgI/AAAAAAAABeM/gNgn_lsaTSQ/s1600/define_lov_5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-wckSCxzxf1k/Ub31mLQVmgI/AAAAAAAABeM/gNgn_lsaTSQ/s1600/define_lov_5.png" height="400" width="398" /></a></div>
<br />
You are almost done. Go to EmployeeVO's View Accessor tab. Select your View Accessor and examine "Row Level Bind Values" property. If Rows in your EmployeeVO can use different Department List than this value should be true. (blank also means true). Easiest way to figure this out is if you have Bind Parameters on your List View Object (DepartmentLOVVO) and that is controlled by another attribute in your View Object (EmployeeVO). For example, if your View Object attribute is State and it's list changes based on Country attribute in that same View Object.<br />
<br />
You must set this value to "false", if list is static for all Rows in your View Object, Otherwise you will see Memory Leak and Performance issues.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-yjW-bLssaMU/Ub31mGfKMsI/AAAAAAAABeQ/ccYJMx78C4o/s1600/define_lov_6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-yjW-bLssaMU/Ub31mGfKMsI/AAAAAAAABeQ/ccYJMx78C4o/s1600/define_lov_6.png" height="325" width="400" /></a></div>
<blockquote class="tr_bq">
<b><span style="color: blue;">"Row Level Bind Values" is sometimes cleared by JDeveloper, which can lead to issues. This is something you want to create Audit Rules to make sure that your Build Process catches it. </span></b></blockquote>
<br />Anonymoushttp://www.blogger.com/profile/17714330272325897750noreply@blogger.com0tag:blogger.com,1999:blog-1083464168224282613.post-13742664192516138712013-06-16T12:09:00.001-05:002013-06-16T12:09:40.910-05:00Define Primary Keys for all View and Entity ObjectsWhen working with ADF, it is best to AVOID ISSUES by doing the right thing. Now that is broad statement, but i will try to post my learning's on this Blog.<br />
<blockquote class="tr_bq">
<span style="color: blue;"><b>Each ADF View & Entity Objects must have Primary Key.</b></span></blockquote>
ADF Business Components will generally have Primary Key defined, when they are generated using "Business Components from Tables" wizard. But in other cases when you have Read Only or Transient View Objects, they will not have Primary Key by default.<br />
<br />
For example, see following steps to create List of Values (SQL based) View Object.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-sLWO7sSgWq4/Ub3wT6TGcrI/AAAAAAAABcs/fj2ogQLx5a8/s1600/create_lov_vo_1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-sLWO7sSgWq4/Ub3wT6TGcrI/AAAAAAAABcs/fj2ogQLx5a8/s1600/create_lov_vo_1.png" height="285" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-gjKnBfSLk2M/Ub3wT2UdE5I/AAAAAAAABc0/83YfJJhVbAc/s1600/create_lov_vo_2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-gjKnBfSLk2M/Ub3wT2UdE5I/AAAAAAAABc0/83YfJJhVbAc/s1600/create_lov_vo_2.png" height="250" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-fuDUOvwP-Os/Ub3wUN20K0I/AAAAAAAABc8/4OuOxINT7vw/s1600/create_lov_vo_3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-fuDUOvwP-Os/Ub3wUN20K0I/AAAAAAAABc8/4OuOxINT7vw/s1600/create_lov_vo_3.png" height="250" width="400" /></a></div>
<br />
Note that DepartmentId is not selected as Primary Key. Select "Key Attribute" check box for all attributes that are part of Primary Key for this particular View Object.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-ic43cK8AJxY/Ub3wU6Qdq6I/AAAAAAAABdA/uaGD7_pslXQ/s1600/create_lov_vo_4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-ic43cK8AJxY/Ub3wU6Qdq6I/AAAAAAAABdA/uaGD7_pslXQ/s1600/create_lov_vo_4.png" height="250" width="400" /></a></div>
<br />
Now you can see DepartmentId is selected as Primary Key.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-l7u8uDbG9p0/Ub3wVM2ZvMI/AAAAAAAABdE/-GtVk3OIb-k/s1600/create_lov_vo_5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-l7u8uDbG9p0/Ub3wVM2ZvMI/AAAAAAAABdE/-GtVk3OIb-k/s1600/create_lov_vo_5.png" height="228" width="400" /></a></div>
<br />
ADF uses Primary Key for selection process, so if you did not have proper primary key, you will see weird behavior in Table Selection.Anonymoushttp://www.blogger.com/profile/17714330272325897750noreply@blogger.com0tag:blogger.com,1999:blog-1083464168224282613.post-31861235986937109302013-06-11T21:54:00.001-05:002013-06-16T12:10:22.018-05:00Use Non Schema User for ADF Business Components<span style="font-family: inherit;">ADF Model project is configured with Database
Connection to generate Business Components from Tables and/or Views.
Generated objects are Not Qualified with Schema name if you use Schema
User for Connection Configuration. This can cause failures like "Table
or View does not exist.", when application executes with a Different
User. You can always resolve such errors by creating Synonyms. </span><br />
<br />
<span style="font-family: inherit;">You have two options:</span><br />
<ol>
<li><span style="font-family: inherit;">Use Non Schema User for </span><span style="font-family: inherit;"><span style="font-family: inherit;">JDeveloper </span>Connection Configuration &amp; no additional work needed when Sharing Code with other Applications. </span></li>
<li><span style="font-family: inherit;">Use Schema User for JDeveloper Connection Configuration. You will have to create Public Synonyms.</span></li>
</ol>
<span style="font-family: inherit;"><u><b>I recommend Option #1</b></u> as it
is very simple and use of Option #2 can lead to confusion due to use of
Synonyms. And this only applies to Code Generation, if you write SQL,
you should implement similar option. </span><br />
<br />
<h3>
<span style="font-family: inherit;">Option 1 : Using Non Schema User for Database Connection</span></h3>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-sIhY5AnuH7A/UbfxmLNbD4I/AAAAAAAABbw/bwH5CmjfVyw/s1600/hrconn.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-sIhY5AnuH7A/UbfxmLNbD4I/AAAAAAAABbw/bwH5CmjfVyw/s1600/hrconn.png" height="400" width="399" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-kP8C0GBFMd0/Ubfxl2m4peI/AAAAAAAABbo/7bE7sB6dsDE/s1600/hrconn_genobject.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-kP8C0GBFMd0/Ubfxl2m4peI/AAAAAAAABbo/7bE7sB6dsDE/s1600/hrconn_genobject.png" height="382" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<h3>
<span style="font-family: inherit;">Option 2 : Using Schema User for Database Connection</span></h3>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-q4vTjQP-PkA/Ubfxl6wg1uI/AAAAAAAABbk/-5gy_T-Oguo/s1600/patelconn.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-q4vTjQP-PkA/Ubfxl6wg1uI/AAAAAAAABbk/-5gy_T-Oguo/s1600/patelconn.png" height="400" width="399" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-FsRQNgJhZzQ/UbfxmLBhFiI/AAAAAAAABb0/awKgZPKECNo/s1600/patelconn_genobject.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-FsRQNgJhZzQ/UbfxmLBhFiI/AAAAAAAABb0/awKgZPKECNo/s1600/patelconn_genobject.png" height="389" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
Anonymoushttp://www.blogger.com/profile/17714330272325897750noreply@blogger.com0