tag:blogger.com,1999:blog-2941721513965340062024-03-13T03:03:34.416-07:00Born To DeBugAnonymoushttp://www.blogger.com/profile/03186199307026201300noreply@blogger.comBlogger82125tag:blogger.com,1999:blog-294172151396534006.post-32959530770512081532016-03-20T11:44:00.001-07:002016-03-20T13:49:12.741-07:00I have a great idea!<div dir="ltr" style="text-align: left;" trbidi="on">
- Hello Developer.<br />
- Hello... you..<br />
- Listen, I have this great idea for an App.<br />
- Really?<br />
- yeah!<br />
- what's it about?<br />
- can't tell you.<br />
- OK...<br />
- So Developer, will you write the code for the App?<br />
- OK, but what should I write? What will the App do?<br />
- Cant tell you.<br />
- Why?<br />
- You haven't signed a NDA yet.<br />
- I see. so where is it?<br />
- I have it at home. in a safe place.<br />
- OK... but why?<br />
- Because in there I have written the idea for the App.<br />
- aha..<br />
- And if I will show it to you, you will read it before you sign it and then I will be at risk.<br />
- I see. It happens..<br />
- yeah...<br />
- OK then.. I guess... there is nothing much to say here, is it?<br />
- No. but could you start writing the code for my App please?<br />
- Let me see.. You know, I would like to know what the App would do... It would help me exclude some patterns I have in mind.<br />
- Well, I can't do that.. It seems that you are not agile enough for my idea.. perhaps I should go elsewhere..<br />
- Oh but I am.. So I have one very specific question for your great idea.<br />
- OK, what is it?<br />
- Can it fly?<br />
- what do you mean?<br />
- I mean, can it actually fly out of the device? Like, you know, fly...<br />
- I can't tell you that.<br />
- OK. I will do it.<br />
- great!<br />
- So talk about the cost now. right?<br />
- Yeah, well, it is a simple App.<br />
- Yeah I figured that out by now..<br />
- So how much would it worth?<br />
- 20 million Euros.<br />
- JEEESUS!! 20 million Euros??? Are you crazy? For this App?<br />
- Why? Haven't I calculated the correct cost of your App while I don't know what it will do?<br />
- of course not!<br />
- well, it is not that simple of an App.<br />
- Why do you say that? my idea is perfect and simple!<br />
- See, the most difficult App is the simple one. but still, yours is not that simple.<br />
- really?<br />
- yeah.. I mean, think about it.. you cannot even tell me if it flies... it is a simple question and your answer, is so complicated. I am already calculating the mandecades of work for this App.<br />
- hm.. perhaps we could remove one part.<br />
- which part?<br />
- can't tell you that.<br />
- Well, if you remove that, then the cost drops to 10 million.<br />
- aha! I knew it! yes!!<br />
- great, should we start then?<br />
- wait it is still a lot of money..<br />
- well what do you mean?<br />
- I mean... come on.. it is very simple now..<br />
- yes you are right.. it is fairly simple now.<br />
- so make me a discount.<br />
- OK, lets go down to 500K Euros.<br />
- excellent.<br />
- great. I will have it ready for you by tomorrow.<br />
- really!!??<br />
- yeah. it is a simple App, right?<br />
- yeah it is.<br />
- OK then. please give me 0.2% in cash of the cost as an advance so I could start working on it.<br />
- There you go.<br />
- Thanks! see you tomorrow. same place?<br />
- Wait wait, I don't have your contact info so that we can talk.<br />
- Oh... yeah.. about that. Cant tell you that.<br />
- Why not? I just gave you the cash!<br />
- yeah you did. but you haven't signed a NDA so that I could tell you who I am.<br />
- why do you need a NDA for you name?<br />
- Don't tell anyone, but, I am spy.<br />
<br />
<div>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIucwjiLs2JEkownF8sjRUwbKftPHROLdQW-1tFpTOaDKlpnAf1xfjaG5H4jv3GJeGppPQGXLIbxmwzSWo9rsW8mQtavdn-TTK6LCtOrDOhNM1osVTS6QfyK_nw-Kd3Knn139zXBW6wyo/s1600/A19F128B-2C31-4B92-92D6-84F381ADF6FF-1-2048x1536-oriented.png" imageanchor="1"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIucwjiLs2JEkownF8sjRUwbKftPHROLdQW-1tFpTOaDKlpnAf1xfjaG5H4jv3GJeGppPQGXLIbxmwzSWo9rsW8mQtavdn-TTK6LCtOrDOhNM1osVTS6QfyK_nw-Kd3Knn139zXBW6wyo/s320/A19F128B-2C31-4B92-92D6-84F381ADF6FF-1-2048x1536-oriented.png" width="240" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjo0W-_khJ042O9r2On7Gp08wM4HUBjw8GvYCCpGamyLs3G8tsHIqL0sO67shOt9mBr8ACiyCHJVK4MDZxXzt8KMzFU0QgiZVmom6xgotWRCY7ione9ILgN8I3ERyquSmRgCLjEL1fQkJQ/s1600/5B6F5841-F06D-4CEA-8BC5-00F387C0D170-1-2048x1536-oriented.png" imageanchor="1"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjo0W-_khJ042O9r2On7Gp08wM4HUBjw8GvYCCpGamyLs3G8tsHIqL0sO67shOt9mBr8ACiyCHJVK4MDZxXzt8KMzFU0QgiZVmom6xgotWRCY7ione9ILgN8I3ERyquSmRgCLjEL1fQkJQ/s320/5B6F5841-F06D-4CEA-8BC5-00F387C0D170-1-2048x1536-oriented.png" width="240" /></a></div>
<br /></div>
Anonymoushttp://www.blogger.com/profile/03186199307026201300noreply@blogger.com1tag:blogger.com,1999:blog-294172151396534006.post-59927954933987374672016-03-16T00:30:00.001-07:002016-03-16T00:30:28.412-07:00No More Websites <div dir="ltr" style="text-align: left;" trbidi="on">
I have to say... The time has come.<br />
<br />
Picture this at will. <br />
You come back from work all tired and happy of your great productive day and all you want is to order your favourite pizza. <br />
You
will have to either call them and probably wait for somebody to answer
the phone or you will be put on a queue, or, you will go on-line and
place your order. <br />
Hang on a minute.. <br />
You will have
to visit the web site, probably login (meaning that you went through the
painful registration process) and then go through a number of steps to
finalize your order.<br />
If you are lucky enough, you will manage to order your pizza without any frustration...<br />
If you are lucky enough..<br />
<br />
Or imagine this:<br />
Your
boss says: Hello my favourite employee! You! Are the chosen one! you
will be going to this convention you have always wanted to! As you know
it is in two weeks and guess what? You will be making a small
presentation of our products in a meeting room full of potential. <br />
We will manage the invitations but you will have to manage your trip plan and the presentation.<br />
WOW!<br />
<div>
You just love those wonderful surprises right?</div>
<div>
Hang on a minute..</div>
<div>
Besides the lovely experience you will get. You will have to plan the whole trip.. But hey that is easy right? </div>
<div>
Yeah sure.</div>
<div>
Book
the cheapest flight, find the closest and cheapest hotel, which has to
be close to some bar or restaurant. On top of that, you have to arrange
transportation to and from the airport, right?</div>
<div>
And how about a stroll around the city? No? Too unprofessional? Maybe.<br />
<br /></div>
<div>
<u><b>No More Websites.</b></u></div>
<div>
<br /></div>
<div>
Wouldn't it be fantastic if we could just ask for something? </div>
<div>
For example:</div>
<div>
"
Hey I would like to go to this place on that date and stay close to
there and always use public transportation. On top of that, I am vegan
and a trip wont change that. Plus is there a beautiful route to follow
on foot on that day evening? "</div>
<div>
<br /></div>
<div>
Going back to the pizza thing.</div>
<div>
"Hey I would like to have a pepperoni lovers from that store, extra thin. Oh and my favourite soda."</div>
<div>
</div>
<div>
And it would just work.</div>
<div>
<br /></div>
<div>
We are human beings and every single one of us has special requests during the day.</div>
<div>
Whether you like it or not, Websites are becoming a problem to our complex life and not the solution.</div>
<div>
We
will be a lot better if there was something that could understand our
needs and sort it out immediately for us. Something that will always be
there for us. Any time of the day, every day.</div>
<div>
<br /></div>
<div>
Cheerz.</div>
</div>
Anonymoushttp://www.blogger.com/profile/03186199307026201300noreply@blogger.com0tag:blogger.com,1999:blog-294172151396534006.post-42114863415299919722016-01-15T15:50:00.000-08:002016-01-15T15:50:36.043-08:00Swift XCode CocoaPods Add and then remove<div dir="ltr" style="text-align: left;" trbidi="on">
Hello,<br />
Its been a while but I was abducted by the secret team of an extraterrestrial species and we were migrating their code to Jdeveloper.<br />
You wouldn't believe the alien spaghetti code I have seen...<br />
<br />
So, this is a quick post with a couple of links that might help you with CocoaPods and your XCode project.<br />
<br />
What is CocoaPods? Well, lets say that it is something like Maven for JAVA for dependences.<br />
<br />
<a href="https://cocoapods.org/">https://cocoapods.org</a><br />
(quote from the website)<br />
<span style="background-color: whitesmoke; color: #333333; font-family: Lato, 'Helvetica Neue', Helvetica, Arial; font-size: 18px;">CocoaPods is a dependency manager for Swift and Objective-C Cocoa projects. It has over ten thousand libraries and can help you scale your projects elegantly. Interested in the news about Swift Package Manager? </span><a href="https://guides.cocoapods.org/using/faq.html" style="box-sizing: border-box; color: #fb0006; font-family: Lato, 'Helvetica Neue', Helvetica, Arial; font-size: 18px; text-decoration: none;">Check our FAQ</a><br />
<br />
Actually this is pretty handy considering that a dependency manager is actually required given the many libs out there.<br />
So guys keep up the good work!<br />
<br />
Now, if you want to remove CocoaPods from your project, well, it is not an easy task as one might expect..<br />
<br />
First read this:<br />
<a href="http://stackoverflow.com/questions/16427421/how-to-remove-cocoapods-from-a-project">http://stackoverflow.com/questions/16427421/how-to-remove-cocoapods-from-a-project</a><br />
As you can see there are a few steps to be done in order to make sure that you have removed everything..<br />
<br />
Then, go there and give it a try. As the readme says... make a back up of your project..<br />
<a href="https://github.com/CocoaPods/cocoapods-deintegrate">https://github.com/CocoaPods/cocoapods-deintegrate</a><br />
<br />
<br />
All right. I have to go back now.<br />
And remember, the idea is to code less, simple and above all clear and understandable magic.<br />
<br />
cheerzz</div>
Anonymoushttp://www.blogger.com/profile/03186199307026201300noreply@blogger.com0tag:blogger.com,1999:blog-294172151396534006.post-70393235850902484152013-08-17T09:02:00.001-07:002013-08-17T09:02:29.066-07:00JDeveloper 12c, JDK 1.7 and Retina Screens. A Blurred Passioned Triangle!<div dir="ltr" style="text-align: left;" trbidi="on">
Hello there.<br />
How are you this fine day? how is your place this time of year??<br />
<br />
In this summer post, we are going to see how to overcome the blurriness we will face if we use JDeveloper 12c , jdk 1.7 on a Retina Screen (I tried on a macbook pro). So the latest jdk was installed on this machine was <b>jdk 1.7 u25 </b> which I believe is the latest version at the time of this writing.<br />
All well and the wind is on our side!<br />
However, installing JDeveloper and using jdk 1.7 u25 caused me some issues... one really.. The whole IDE was blurry and very very very very x 2048=<b>very</b> annoying. I couldn't actually read or write any code...<br />
<br />
And I think to my self... what a wonderful summer (well... for the Northern hemisphere anyways.. or let me rephrase: what a wonderful season! (feel better now?) ... why is this happening?<br />
<br />
Well, it turns out that this is <b>not related to JDeveloper. </b>It is <b>jdk 1.7 issue</b> as mentioned here:<br />
<br />
<a href="https://netbeans.org/bugzilla/show_bug.cgi?id=215141">https://netbeans.org/bugzilla/show_bug.cgi?id=215141</a><br />
<br />
And yes, I did try to see how NetBeans brother looked like and it was the same problem..<br />
<br />
Alrighty! So, we are good. it is not JDeveloper's fault. it is not Retina's fault.. it is the jdk 1.7 u25 that causes this behaviour.<br />
In fact, <b>every application that is jdk based will be blurry...</b> <br />
<br />
If you go ahead and open the Java control panel from your mac preferences.. oh baby... it is a blurry world!<br />
So, what do we do? lets go the beach.. or a mountain.. or a bowling place.. or beach party.. or stay inside enjoy good music..<br />
Or perhaps, fix this issue? what do you say?<br />
<br />
Well there is a way! isntall jdk1.7 u40 or early access jdk 8! and viola! things are all good!<br />
https://jdk7.java.net/download.html<br />
http://jdk8.java.net<br />
<br />
I went for the jdk 1.7 u40 and everything worked like a charm! Or not?<br />
Well, for the NetBeans brother, it did... a restart would do the trick.. the blurriness.. gone.<br />
<br />
But for my JDeveloper, it didnt.. it just stayed there.. it was blurry as hell.. To my disappointment, I though it was even more blurry! But of course not..<br />
So we still have a blurry JDeveloper.. Why is that?<br />
<br />
We have to get to the bottom of this.<br />
<br />
Alright.. Netbeans worked like a charm.. but JDeveloper did not..<br />
OK. Lets see how to set it to the default then!<br />
<br />
Locate your <b>jdev.conf</b> file in your JDeveloper Middleware home( whereDidYouInstallJDeveloperPath/jdeveloper/jdev/bin/jdev.conf )..<br />
<br />
When you open it, you will see the following:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvdKfR2cqGiGZKYoDQLQ2fOp8XvGKvNb9oaxAykvzsb_exLSYp-T4bGq7fvVyxD2t7Sufp9Xr2Nl-4xM7rhDo19Z4Djp1rZ1_riAsg9SbWAhf-Q1IXrHQVcJlQR29my0ieKpIcXF9kJBo/s1600/jdkConfigurationJDevDefault.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="276" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvdKfR2cqGiGZKYoDQLQ2fOp8XvGKvNb9oaxAykvzsb_exLSYp-T4bGq7fvVyxD2t7Sufp9Xr2Nl-4xM7rhDo19Z4Djp1rZ1_riAsg9SbWAhf-Q1IXrHQVcJlQR29my0ieKpIcXF9kJBo/s320/jdkConfigurationJDevDefault.png" width="320" /></a></div>
<br />
Hmm...<br />
What do we get from that? Shall we just change the path over there and restart?<br />
The comment says:<br />
<br />
<br />
# Directive SetJavaHome is not required by default, except for the base<br />
# install, since the launcher will determine the JAVA_HOME. On Windows<br />
# it looks in ..\..\jdk, on UNIX it first looks in ../../jdk. If no JDK<br />
# is found there, it looks in the PATH.<br />
<div>
<br /></div>
<div>
ok.. so.... I am a bit confused here... it says it is not required.. I have already updated my mac with jdk.17 u40 and it still dosent work.. </div>
<div>
<br /></div>
<div>
The comment further says that it will look for jdk folder first under specific paths..</div>
<div>
I guess this is for installations with bundled jdks... Which in my case... there is no jdk folder...</div>
<div>
so this leaves us with the PATH option...</div>
<div>
No luck here either... I have no java set in the PATH...</div>
<div>
<br /></div>
<div>
So, I am guessing that it has to pick up that directive either way...</div>
<div>
Why dont we update the PATH with our new java version and see what happens??</div>
<div>
ok then! (I assume you said YES passionately! and without blurry hesitations! )</div>
<div>
<br /></div>
<div>
ok so we have to set our ~/.batch_profile with JAVA_HOME and then update our PATH</div>
<div>
here is a sample:</div>
<div>
<br /></div>
<br />
<br />
export JAVA_HOME=$(/usr/libexec/java_home)<br />
<br />
export PATH=$PATH:$JAVA_HOME/bin<br />
<br />
<br />
<br />
ok. so, now, lets just restart JDeveloper...<br />
<br />
Unfortunately, that did not work.. I dont know if we set it all wrong or I understood it all wrong.... but it certainly did not work..<br />
<br />
So we have to change that directive to the path of the jdk 1.7_40..<br />
<br />
After we restarted JDeveloper, it was obvious from the splash screen that things are now improved..<br />
We can verify this by going to <b>Tools -> Manage Libraries and select JSE definitions</b><br />
<b><br /></b>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCUZC2nYcn1PqBhPK0M3bxML-jG5PC46XSX0FiSE3aXa8_X1dPzMtqdcyfX-XwdySrR2HX0A0GSbx9FKWGp0BuLAOfpbD4h5jp9zQGVldZvgpFHgsq7VatcFnmUTIMgtACl_U_c66vMMc/s1600/newJDKDefined.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="172" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCUZC2nYcn1PqBhPK0M3bxML-jG5PC46XSX0FiSE3aXa8_X1dPzMtqdcyfX-XwdySrR2HX0A0GSbx9FKWGp0BuLAOfpbD4h5jp9zQGVldZvgpFHgsq7VatcFnmUTIMgtACl_U_c66vMMc/s320/newJDKDefined.png" width="320" /></a></div>
<b><br /></b>
And this is it. It is not pretty... but it did the job.<br />
<br />
<b>A note on integrated weblogic</b>: Since this is a workaround for the blurry screen, it is not needed to change the jdk integrated Weblogic uses to run. we can leave it as is. It will run just fine!<br />
<br />
For those of you who want to change that config as well, you can change the setDomainEnv.sh file under your system folder / DefaultDomain / bin ( mine was <b>~/system12.1.2.0.40.66.68/DefaultDomain/bin/setDomainEnv.sh</b> )<br />
<br />
<b>A last not</b>e, we could just reinstall JDeveloper and pick up the jdk we wanted... but where is the fun in that??<br />
<br />
We can now enjoy the pixelized but not blurred splash screen of JDeveloper.. The rest of the IDE is just fine!<br />
<br />
CheerzZzZzZz..<br />
<br />
<br /></div>
Anonymoushttp://www.blogger.com/profile/03186199307026201300noreply@blogger.com0tag:blogger.com,1999:blog-294172151396534006.post-45129403104891503002013-04-05T12:00:00.000-07:002013-04-05T14:59:30.602-07:00Lucky 11.1.1.7.0 JDeveloper (aka 11g ps6) is here.<div dir="ltr" style="text-align: left;" trbidi="on">
I just feel part of the happy community to welcome the new version of JDeveloper !!<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjKUJaty8klnqJLkk-200QjzArLqZKm3FIBZ5S4EI5s9mHLsiXo-UvzTAx-W2zctdh4G9eTScf5hmrmG8hIDZf1WGspuv6i-nrYHV1oKE7ISLi9_KtTdYjkfY4GOs-ABnqC87XlcMoTl8/s1600/lucky111170.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="203" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjKUJaty8klnqJLkk-200QjzArLqZKm3FIBZ5S4EI5s9mHLsiXo-UvzTAx-W2zctdh4G9eTScf5hmrmG8hIDZf1WGspuv6i-nrYHV1oKE7ISLi9_KtTdYjkfY4GOs-ABnqC87XlcMoTl8/s320/lucky111170.png" width="320" /></a></div>
<br />
<br />
You can download it from here<br />
<a href="http://www.oracle.com/technetwork/developer-tools/jdev/downloads/jdeveloper11117-1917330.html">http://www.oracle.com/technetwork/developer-tools/jdev/downloads/jdeveloper11117-1917330.html </a><br />
<br />
<b>Andrejus Baranovskis</b> has already mentioned in his blog, table pagination is back!<br />
<a href="http://andrejusb.blogspot.in/2013/04/adf-11g-ps6-adf-10g-table-pagination.html">http://andrejusb.blogspot.in/2013/04/adf-11g-ps6-adf-10g-table-pagination.html</a><br />
<br />
<b>Timo Hahn</b> has already pointed out to beware about the layout container<br />
<a href="http://tompeez.wordpress.com/2013/04/03/jdev-11-1-1-7-0-table-pagination-beware-of-the-layout-container/">http://tompeez.wordpress.com/2013/04/03/jdev-11-1-1-7-0-table-pagination-beware-of-the-layout-container/ </a><br />
<br />
<br />
<b>Lucas Jellema</b> demostrated the treeMap component<br />
<a href="http://technology.amis.nl/2013/04/02/adf-dvt-using-the-tree-map-visualization-component-to-compare-relative-sizes-and-distributions/">http://technology.amis.nl/2013/04/02/adf-dvt-using-the-tree-map-visualization-component-to-compare-relative-sizes-and-distributions/ </a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://technology.amis.nl/wp-content/uploads/2013/04/image26.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="195" src="http://technology.amis.nl/wp-content/uploads/2013/04/image26.png" width="320" /></a></div>
<br />
<br />
<b>Shay Schmeltzer</b> demonstrated the usage of sunburst component<br />
<a href="https://blogs.oracle.com/shay/entry/working_with_the_sunburst_adf">https://blogs.oracle.com/shay/entry/working_with_the_sunburst_adf</a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhj9kVTW66SgJ3WhL_AaqvD1Ep9GpMOcwFbdbF9LdZ6iagaCWlkeuGS5FX7CVHpe_C3VIVraTM_soajbA2aco9a1hfYFdYv28l7wI-EZxjnsI1bpum18Mnzt7BQbgbhPvF9SztfUGZv4SI/s1600/suburst.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="245" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhj9kVTW66SgJ3WhL_AaqvD1Ep9GpMOcwFbdbF9LdZ6iagaCWlkeuGS5FX7CVHpe_C3VIVraTM_soajbA2aco9a1hfYFdYv28l7wI-EZxjnsI1bpum18Mnzt7BQbgbhPvF9SztfUGZv4SI/s320/suburst.png" width="320" /></a></div>
<br />
<br />
<b>Chris Muir</b> explains why we should upgrade to this new version:<br />
<a href="https://blogs.oracle.com/onesizedoesntfitall/entry/not_how_but_why_should">https://blogs.oracle.com/onesizedoesntfitall/entry/not_how_but_why_should</a><br />
<br />
Personally I havent developed anything yet, but I know I will start using it for the two following reason alone!<br />
<br />
<b>CSS3 (Skyros skin)</b><br />
<b>Table Pagination</b>!<br />
<br />
Here you can find the known issues:<br />
<a href="http://www.oracle.com/technetwork/developer-tools/jdev/default-1399172.html">http://www.oracle.com/technetwork/developer-tools/jdev/default-1399172.html </a><br />
<br />
and here are the bug fixes<br />
<a href="http://www.oracle.com/technetwork/developer-tools/jdev/index-088099.html#11gR1Patchset6%2811.1.1.7.0%29NewFeatures-BugFixList">http://www.oracle.com/technetwork/developer-tools/jdev/index-088099.html#11gR1Patchset6%2811.1.1.7.0%29NewFeatures-BugFixList</a><br />
<br />
Regards. <br />
<br />
<br />
<br />
<br />
<br />
<br /></div>
Anonymoushttp://www.blogger.com/profile/03186199307026201300noreply@blogger.com0tag:blogger.com,1999:blog-294172151396534006.post-29851255318859287382013-04-03T04:16:00.000-07:002013-04-03T04:16:07.715-07:00Maven Deploy to Oracle Weblogic. Step By Step. The Basics. Part 2/4<div dir="ltr" style="text-align: left;" trbidi="on">
Hi,<br />
This is a series of four (4) articles that will describe how to use Maven and deploy a sample application to Weblogic.<br />
<br />
Contents of each part:<br />
<ul style="text-align: left;">
<li><a href="http://dstas.blogspot.com/2013/04/maven-toweblogic-part1.html">Part 1: <b>Maven</b>. Provide the general idea of Maven and install it on <b>Windows</b>.</a></li>
<li>Part 2:<b> Weblogic</b>. Provide the general idea of Weblogic and install it on <b>Windows</b>.</li>
<li><a href="http://dstas.blogspot.com/2013/04/maven-toweblogic-part3.html">Part 3: <b>Sample Maven Applications</b>. We will create three sample maven applications. One with Netbeans and one without any IDE.</a></li>
<li><a href="http://dstas.blogspot.com/2013/04/maven-toweblogic-part4.html">Part 4: <b>Configuration and Deployment.</b> We will configure everything and we will deploy the applications to Weblogic</a>.</li>
</ul>
<br />
<i><b>There are no assumptions here and we are going to do everything from scratch.</b></i><br />
<br />
There is always a person out there that will have to use those technologies together without knowing any of them.<br />
<br />
So far, we have learned about Maven, what it is, and what is it's role in this task of ours. We understand that we have to create a Mavnen project and by using Maven we wil deploy our sample applications to Weblogic. But we dont know what weblogic is and how do we use it..<br />
<br />
<br />
<u><b>Weblogic</b></u><br />
<br />
What is Weblogic?? Well, Weblogic is a lot of things.. In our case, we are talking about <b>Weblogic Server</b>. So, what is Weblogic Server?<br />
According to Oracle's web site ( content extracted from <a href="http://www.oracle.com/technetwork/middleware/weblogic/overview/index.html">http://www.oracle.com/technetwork/middleware/weblogic/overview/index.html</a> )<br />
<br />
.... <br />
<blockquote class="tr_bq">
Oracle WebLogic Server 12c is the industry's best application server for building and deploying enterprise <a href="http://www.oracle.com/technetwork/java/javaee/overview/index.html" target="">Java EE</a>
applications with support for new features for lowering cost of
operations, improving performance, enhancing scalability and supporting
the <a href="http://www.oracle.com/us/products/applications/index.html?ssSourceSiteId=otnen" target="">Oracle Applications</a> portfolio. </blockquote>
.... <br />
Okay... so what is an application server??<br />
According to TSS (content extracted from <a href="http://www.theserverside.com/news/1363671/What-is-an-App-Server">http://www.theserverside.com/news/1363671/What-is-an-App-Server</a>)<br />
<blockquote class="tr_bq">
<b>an
application server provides an environment where applications can
run, no matter what the applications are or what they do.</b></blockquote>
<br />
Furthermore, the JAVA EE 6 tutorial says (content extracted from <a href="http://docs.oracle.com/javaee/6/tutorial/doc/bnabo.html">http://docs.oracle.com/javaee/6/tutorial/doc/bnabo.html</a> )<br />
<br />
...<br />
<blockquote class="tr_bq">
<h3>
Container Services</h3>
<a href="http://www.blogger.com/blogger.g?blogID=294172151396534006" name="indexterm-28"></a><b>Containers</b> are the interface between a component and the low-level platform-specific functionality that
supports the component. Before it can be executed, a web, enterprise bean, or
application client component must be assembled into a Java EE module and deployed
into its container.<br />
The assembly process involves specifying container settings for each component in the Java
EE application and for the Java EE application itself. Container settings customize the
underlying support provided by the Java EE server, including such services as security,
transaction management, Java Naming and Directory Interface (JNDI) API lookups, and remote connectivity. Here
are some of the highlights.<br />
<ul>
<li><a href="http://www.blogger.com/blogger.g?blogID=294172151396534006" name="indexterm-29"></a>The Java EE security model lets
you configure a web component or enterprise bean so that system
resources are accessed only by authorized users.<br />
</li>
<li><a href="http://www.blogger.com/blogger.g?blogID=294172151396534006" name="indexterm-30"></a>The Java EE transaction model lets you
specify relationships among methods that make up a single transaction
so that all methods in one transaction are treated as a single unit.<br />
</li>
<li>JNDI lookup services provide a unified interface to multiple
naming and directory services in the enterprise so that application
components can access these services.<br />
</li>
<li>The Java EE remote connectivity model manages low-level
communications between clients and enterprise beans. After an enterprise
bean is created, a client invokes methods on it as if it were in the
same virtual machine.<br />
</li>
</ul>
<a href="http://www.blogger.com/blogger.g?blogID=294172151396534006" name="indexterm-31"></a>Because the Java EE architecture provides configurable services, application components within the same
Java EE application can behave differently based on where they are deployed. For
example, an enterprise bean can have security settings that allow it a certain
level of access to database data in one production environment and another level
of database access in another production environment.<br />
<a href="http://www.blogger.com/blogger.g?blogID=294172151396534006" name="indexterm-32"></a>The container also manages nonconfigurable services, such as enterprise bean and servlet lifecycles,
database connection resource pooling, data persistence, and access to the Java EE platform
APIs (see <a href="http://docs.oracle.com/javaee/6/tutorial/doc/bnacj.html">Java EE 6 APIs</a>).<br />
<a href="http://www.blogger.com/blogger.g?blogID=294172151396534006" name="bnabq"></a><br />
<h3>
Container Types</h3>
The <b>deployment</b> process installs Java EE application components in the Java EE containers
as illustrated in <a href="http://docs.oracle.com/javaee/6/tutorial/doc/bnabo.html#bnabr">Figure 1-5</a>.<br />
<a href="http://www.blogger.com/blogger.g?blogID=294172151396534006" name="bnabr"></a><br />
<div class="caption">
Figure 1-5 Java EE Server and Containers</div>
<img alt="Diagram of client-server communication showing servlets and web pages in the web tier and enterprise beans in the business tier." src="http://docs.oracle.com/javaee/6/tutorial/doc/figures/overview-servercontainers.gif" />
</blockquote>
<ul>
<li><blockquote>
<a href="http://www.blogger.com/blogger.g?blogID=294172151396534006" name="indexterm-33"></a><b>Java EE server</b>: The runtime portion of a Java EE product. A Java EE server provides EJB and web containers.</blockquote>
</li>
<li><blockquote>
<a href="http://www.blogger.com/blogger.g?blogID=294172151396534006" name="indexterm-34"></a><a href="http://www.blogger.com/blogger.g?blogID=294172151396534006" name="indexterm-35"></a><b>Enterprise JavaBeans (EJB) container</b>:
Manages the execution of enterprise beans for Java EE applications.
Enterprise beans and their container run on the Java EE server.</blockquote>
</li>
<li><blockquote>
<a href="http://www.blogger.com/blogger.g?blogID=294172151396534006" name="indexterm-36"></a><b>Web container</b>: Manages the
execution of web pages, servlets, and some EJB components for Java EE
applications. Web components and their container run on the Java EE
server.</blockquote>
</li>
<li><blockquote>
<a href="http://www.blogger.com/blogger.g?blogID=294172151396534006" name="indexterm-37"></a><a href="http://www.blogger.com/blogger.g?blogID=294172151396534006" name="indexterm-38"></a><b>Application client container</b>: Manages the execution of application client components. Application clients and their container run on the client.</blockquote>
</li>
<li><blockquote>
<a href="http://www.blogger.com/blogger.g?blogID=294172151396534006" name="indexterm-39"></a><b>Applet container</b>: Manages the execution of applets. Consists of a web browser and Java Plug-in running on the client together.</blockquote>
</li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://docs.oracle.com/javaee/6/tutorial/doc/figures/overview-servercontainers.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"></a></div>
<br />
And in order to be fully covered ( content extracted from <a href="http://docs.oracle.com/cd/E24329_01/web.1211/e24446/intro.htm#sthref6">http://docs.oracle.com/cd/E24329_01/web.1211/e24446/intro.htm#sthref6</a> )<br />
<br />
<blockquote class="tr_bq">
The WebLogic Server complete implementation of the Java EE 6.0
specification provides a standard set of APIs for creating distributed
Java applications that can access a wide variety of services, such as
databases, messaging services, and connections to external enterprise
systems. End-user clients access these applications using Web browser
clients or Java clients. It also supports the Spring Framework, a
programming model for Java applications which provides an alternative to
aspects of the Java EE model. See <a href="http://docs.oracle.com/cd/E24329_01/web.1211/e24446/intro.htm#CEGJHBGC">Programming Models.</a></blockquote>
<br />
So, in a nutshell, Weblogic Server, is a container for JEE applications. It holds our JEE applications and we can access them by making requests to it (Weblogic Server that is.)<br />
All we have to do is to deploy our application to Weblogic!<br />
<br />
<blockquote class="tr_bq">
<blockquote class="tr_bq">
<b>This article is not going to fully explain the architecture of Weblogic and it certainly does not itend to cover every aspect of it. Furthermore, it is not in the intention of this article to replace the official documentation. This article aims to introduce Weblogic to the reader and provide enough information and knowledge in order to finish the aforementioned task of deploying a sample application to weblogic using Mave</b>n.</blockquote>
</blockquote>
<br />
<br />
<u>Weblogic works with <b>domains</b></u>. What? yes. domains. What is a domain?<br />
According to the official documentation ( content extracted from <a href="http://docs.oracle.com/cd/E24329_01/web.1211/e24446/domains.htm#INTRO173">http://docs.oracle.com/cd/E24329_01/web.1211/e24446/domains.htm#INTRO173</a> )<br />
<blockquote class="tr_bq">
An Oracle WebLogic Server administration <span class="bold">domain</span>
is a logically related group of Oracle WebLogic Server resources.
Domains include a special Oracle WebLogic Server instance called the <span class="bold">Administration Server</span>,
which is the central point from which you configure and manage all
resources in the domain. Usually, you configure a domain to include
additional Oracle WebLogic Server instances called <span class="bold">Managed Servers</span>.
You deploy Web applications, EJBs, Web services, and other resources
onto the Managed Servers and use the Administration Server for
configuration and management purposes only.</blockquote>
<br />
<b>And yes! you thought correct! We have to have a domain to deploy our JEE application.</b><br />
<br />
Can we have more than one domain? YES! we can!<br />
here is a very elaborative diagram from the official documentation (image copied from <a href="http://docs.oracle.com/cd/E24329_01/web.1211/e24446/domains.htm#INTRO173">http://docs.oracle.com/cd/E24329_01/web.1211/e24446/domains.htm#INTRO173</a> )<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://docs.oracle.com/cd/E24329_01/web.1211/e24446/img/domainoverview.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="297" src="http://docs.oracle.com/cd/E24329_01/web.1211/e24446/img/domainoverview.gif" width="320" /></a></div>
<br />
You see that you deside your structure and you deside how many domains you want. As simple as that. In our case, we only need on domain and no managed servers.<br />
<br />
<u>Getting <b>Weblogic</b></u>.<br />
<br />
You can download Weblogic from the following link<br />
<a href="http://www.oracle.com/technetwork/middleware/weblogic/downloads/index.html">http://www.oracle.com/technetwork/middleware/weblogic/downloads/index.htm</a><a href="http://www.blogger.com/blogger.g?blogID=294172151396534006">l</a><br />
<br />
Download your favorite version if you want. We will be using the latest version at the time of this writting which is 12c (12.1.1). Since our example is rather basic, I dont think that you will face any issues with previous versions.<br />
<br />
<u>Installing <b>Weblogic</b></u><br />
The official documentation does an excellent job describing all the installation steps:<br />
<a href="http://docs.oracle.com/cd/E24329_01/doc.1211/e24492/guimode.htm#i1082009">http://docs.oracle.com/cd/E24329_01/doc.1211/e24492/guimode.htm#i1082009</a><br />
Without trying to copy paste the entire official documentation here xD I am extracting a sample of it as it seems to be the most common approach:<br />
<blockquote class="tr_bq">
To start the installation program in graphical mode on a Windows platform, follow these steps.<br />
<ol>
<li>
Log in to the Windows system.<br />
</li>
<li>
Go to the directory that contains the installation program.<br />
</li>
<li>
Double-click the installation file.<br />
For example, the name of the installation program for the WebLogic Server Package installer for Windows 32-bit is <code>wls1036_win32.exe</code>.<br />
The installation program begins to install the software.<br />
</li>
</ol>
See <a href="http://docs.oracle.com/cd/E24329_01/doc.1211/e24492/guimode.htm#BABHJJIH">Installation Screens</a> for a description of each installation program screen.<br />
<br /></blockquote>
As you will see, it a pretty straightforward wizard that almost everything for you. All you have to do is define the jdk to be use and the Middleware home.<br />
<br />
Note down the middleware home path! ( we will need it in later parts of this article )<br />
(this image was taken from the official documentation.)<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://docs.oracle.com/cd/E24329_01/doc.1211/e24492/img/prod-install.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="230" src="http://docs.oracle.com/cd/E24329_01/doc.1211/e24492/img/prod-install.gif" width="320" /></a></div>
<br />
<br />
<br />
Once Weblogic is installed, we have to create a domain.<br />
<u><br /></u>
<u>Creating a <b>domain</b></u><br />
Usually, when you are finished with the weblogic installation a new dialog is shown asking you if you want to configure your weblogic among other options. Even if you chose to close that window, you can still create a domain. Just follow the official instructions (content copied from <a href="http://docs.oracle.com/cd/E24329_01/web.1211/e24499/newdom.htm#WLDCW111">http://docs.oracle.com/cd/E24329_01/web.1211/e24499/newdom.htm#WLDCW111</a> )<br />
<br />
<ul>
<li>
<blockquote class="tr_bq">
To start the Configuration Wizard in graphical mode on a Windows platform, choose <span class="gui-object-action">Start</span> > <span class="gui-object-action">Programs</span> > <span class="gui-object-action">Oracle WebLogic</span> > <span class="gui-object-action">WebLogic Server</span> > <span class="gui-object-action">Tools</span> > <span class="gui-object-action">Configuration Wizard</span>.</blockquote>
</li>
<li><blockquote>
To start the Configuration Wizard in graphical mode from a Windows command prompt or on UNIX systems:</blockquote>
<ol>
<li><blockquote>
Log in to the system on which the product is installed.</blockquote>
</li>
<li><blockquote>
Open an MS-DOS command prompt window (on Windows) or a command shell (on UNIX).</blockquote>
</li>
<li><blockquote>
Go to the following directory:<br />
On Windows: <span class="italic">WLHOME</span><code>\common\bin</code><br />
On UNIX: <span class="italic">WLHOME</span><code>/common/bin</code><br />
where <span class="italic">WLHOME</span> is the directory in which WebLogic Server is installed.</blockquote>
</li>
<li><blockquote>
Execute the following command:<br />
On Windows: <code>config.cmd</code><br />
On UNIX: <code>sh config.sh</code></blockquote>
<br />
<blockquote>
<div class="infoboxnote">
<div class="notep1">
Note:</div>
When you run the <code>config.cmd</code> or <code>config.sh</code> command, the following error message might be displayed to indicate that the default cache directory is not valid:<br />
<code>*sys-package-mgr*: can't create package cache dir</code><br />
You can change the cache directory by including the <code>-Dpython.cachedir=</code><code><span class="codeinlineitalic">valid_directory</span></code> option in the command line.</div>
The <span class="gui-object-title">Welcome</span> screen is displayed.</blockquote>
</li>
</ol>
</li>
</ul>
<br />
<br />
When asked for a domain name, place whatever you prefer but note it down because we are going to need it later on. <br />
For the sake of this example, the name of the domain is base_domain<br />
(image taken from <a href="http://docs.oracle.com/cd/E24329_01/web.1211/e24499/configuration_screens.htm#CIHHDFJJ">http://docs.oracle.com/cd/E24329_01/web.1211/e24499/configuration_screens.htm#CIHHDFJJ</a> )<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://docs.oracle.com/cd/E24329_01/web.1211/e24499/img/name_location.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="230" src="http://docs.oracle.com/cd/E24329_01/web.1211/e24499/img/name_location.gif" width="320" /></a></div>
<br />
<br />
Another important step is the administrator user name and password. This is important since you will be using those credentials to administer the domain. So when you reach the following step, make sure that you remember the username and password! <b>For the sake of this example we use weblogic / welcome1</b><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://docs.oracle.com/cd/E24329_01/web.1211/e24499/img/username_password.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="230" src="http://docs.oracle.com/cd/E24329_01/web.1211/e24499/img/username_password.gif" width="320" /></a></div>
<br />
<br />
Note that we do not need any managed servers or clustering for this
example. No JDBC datasources or something similar. Just a simple
domain.<br />
So when you reach this step (image taken from<a href="http://docs.oracle.com/cd/E24329_01/web.1211/e24499/configuration_screens.htm#CIHBICAA"> http://docs.oracle.com/cd/E24329_01/web.1211/e24499/configuration_screens.htm#CIHBICAA</a> )<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://docs.oracle.com/cd/E24329_01/web.1211/e24499/img/optional_config.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="230" src="http://docs.oracle.com/cd/E24329_01/web.1211/e24499/img/optional_config.gif" width="320" /></a></div>
<br />
Leave everything unselected. We dont need them for this example.<br />
<br />
After you finish the wizard, you have a new domain!! hooray!!<br />
<br />
<u>Start and Stop the <b>domain</b></u><br />
Now it is time to start the domain you have previously created.<br />
<b>Starting</b>:<br />
According to the official documentation<br />
<a href="http://docs.oracle.com/cd/E24329_01/web.1211/e21048/startquickref.htm#i1052773">http://docs.oracle.com/cd/E24329_01/web.1211/e21048/startquickref.htm#i1052773</a><br />
<blockquote class="tr_bq">
<code><span class="codeinlineitalic">WL_HOME</span></code><code>\samples\domains\medrec\bin\startWebLogic.cmd</code> (Windows) </blockquote>
<br />
WL_HOME is the installation path of weblogic. That is, the path you chose to install weblogic in the previous steps.<br />
After WL_HOME follows the path that leads to the .cmd script that starts the admin server.<br />
In this example the path is the following:<br />
<br />
<b>C:\Oracle\Middleware\wls1211\user_projects\domains\base_domain\bin\startWeblogic.cmd</b><br />
<b><br /></b>
<b>The simplest way to call the script would be through a cmd prompt. </b>open a cmd prompt and go to the folder of the script and just call it. This will start your admin server of your domain.<br />
<br />
There is another way of starting your domain. Through the start menu.<br />
Depending on your windows version, you will be able to navigate to the same script call from the start menu. The installation has took care of everything and added the appropriate links for you.<br />
So in your start menu you will be able to see something like the following:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQOh0KMgy8Xjb6GDHkwGPqKdFexJwsl76jUsYPLpb7HQRBToe7YAOG0VGq8xaSIhpmSi7D-3jKEG4gxjEYtL5_v98cEaK2FU7jlQOZQS6NAf76yBv-duhH8ZorMN9lwd34qVIRz3A5dWo/s1600/startAdmin.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQOh0KMgy8Xjb6GDHkwGPqKdFexJwsl76jUsYPLpb7HQRBToe7YAOG0VGq8xaSIhpmSi7D-3jKEG4gxjEYtL5_v98cEaK2FU7jlQOZQS6NAf76yBv-duhH8ZorMN9lwd34qVIRz3A5dWo/s1600/startAdmin.png" /></a></div>
<br />
<br />
<b>Stopping</b>:<br />
<br />
It is exactly the same process but with different script.<br />
<b>C:\Oracle\Middleware\wls1211\user_projects\domains\base_domain\bin\stopWeblogic.cmd</b><br />
As you see in the above img, you already have the related link.<br />
However there is an additional way. Just go to the cmd window that runs the server process and simply press <b>ctr+c . </b>This will kill the running process on the cmd window and it will stop the server.<br />
<br />
That is all about weblogic for now!<br />
Next step, lets create a <a href="http://dstas.blogspot.com/2013/04/maven-toweblogic-part3.html">sample application using Maven.</a><br />
<br /></div>
Anonymoushttp://www.blogger.com/profile/03186199307026201300noreply@blogger.com0tag:blogger.com,1999:blog-294172151396534006.post-69202495643625945982013-04-03T04:13:00.003-07:002013-04-03T04:14:58.905-07:00Maven Deploy to Oracle Weblogic. Step By Step. The Basics. Part 4/4<div dir="ltr" style="text-align: left;" trbidi="on">
Hi,<br />
This is a series of four (4) articles that will describe how to use Maven and deploy a sample application to Weblogic.<br />
<br />
Contents of each part:<br />
<ul style="text-align: left;">
<li><a href="http://dstas.blogspot.com/2013/04/maven-toweblogic-part1.html">Part 1: <b>Maven</b>. Provide the general idea of Maven and install it on <b>Windows</b>.</a></li>
<li><a href="http://dstas.blogspot.com/2013/04/maven-toweblogic-part2.html">Part 2:<b> Weblogic</b>. Provide the general idea of Weblogic and install it on <b>Windows</b>.</a></li>
<li><a href="http://dstas.blogspot.com/2013/04/maven-toweblogic-part3.html">Part 3: <b>Sample Maven Applications</b>. We will create three sample maven applications. One with Netbeans and one without any IDE.</a></li>
<li>Part 4: <b>Configuration and Deployment.</b> We will configure everything and we will deploy the applications to Weblogic.</li>
</ul>
<br />
<i><b>There are no assumptions here and we are going to do everything from scratch.</b></i><br />
<br />
There is always a person out there that will have to use those technologies together without knowing any of them.<br />
<br />
<b>So Far</b><br />
Up to this point, we spent some time trying to get acquainted with various stuff.. We learned about Maven.. we learned about Weblogic, we learned a bit about Netbeans and we have created two maven projects. <br />
<br />
Aaand.. at this final part of this series.. we are going to deploy our maven applications to our weblogic server.<br />
<br />
Everything is setup and all we have to do is a few more steps.<br />
<br />
Remember when we talked about Maven is using plugins? <br />
Well, this is what we have to do, use a plugin that will help us deploy our maven application.<br />
But which plugin?<br />
<br />
Oracle provides a way in doing things<br />
<br />
<a href="http://docs.oracle.com/cd/E24329_01/web.1211/e24368/maven.htm">http://docs.oracle.com/cd/E24329_01/web.1211/e24368/maven.htm</a><br />
<br />
<code>....</code><br />
<ul>
<li>
<code>wls-maven-plugin</code>—Delivered in WebLogic Server 12<span class="italic">c,</span>
provides enhanced functionality to install, start and stop servers,
create domains, execute WLST scripts, and compile and deploy
applications. In addition to its shortened, easier to specify name, the
extended functionality in the <code>wls-maven-plugin</code> requires a local WebLogic Server installation, in contrast to the <code>weblogic-maven-plugin</code>, which is generated as a standalone, self-contained JAR file. However, with the <code>wls-maven-plugin</code>,
you can install WebLogic Server from within your Maven environment to
fulfill the local WebLogic Server requirement. For more information
about this plug-in, see <a href="http://docs.oracle.com/cd/E24329_01/web.1211/e24368/maven.htm#CHEIHIEH">Configuring the WebLogic Development Maven Plug-In.</a>. <br />
</li>
</ul>
.....<br />
<br />
So we understand that <b>Weblogic 12c</b> already provides the maven plugin for us.<br />
<br />
All we have to do is to <b>install </b>that plugin to our repository.<br />
<b>Locate the plugin and the pom.xml </b><br />
According to the documentation<br />
<b> </b><br />
(<a href="http://docs.oracle.com/cd/E24329_01/web.1211/e24368/maven.htm">http://docs.oracle.com/cd/E24329_01/web.1211/e24368/maven.htm</a>)<br />
<blockquote class="tr_bq">
The <code>wls-maven-plugin</code> is located in the <code><span class="codeinlineitalic">MW_HOME</span></code><code>/wlserver_12.1/server/lib</code> directory, where <code><span class="codeinlineitalic">MW_HOME</span></code> represents the top-level installation directory for all Fusion Middleware products installed on one machine; for example, <code>c:\Oracle\Middleware</code>. The plug-in is provided as a pre-built JAR file and accompanying <code>pom.xml</code> file:</blockquote>
<ul>
<li><blockquote>
<code><span class="codeinlineitalic">MW_HOME</span></code><code>/wlserver_12.1/server/lib/wls-maven-plugin.jar</code></blockquote>
</li>
<li><blockquote>
<code><span class="codeinlineitalic">MW_HOME</span></code><code>/wlserver_12.1/server/lib/pom.xml</code></blockquote>
</li>
</ul>
<b> </b><br />
<br />
In our case (for this example):<br />
<br />
<b>C:\Oracle\Middleware\wls1211\wlserver_12.1\server\lib\wls-maven-plugin.jar</b><br />
<b>C:\Oracle\Middleware\wls1211\wlserver_12.1\server\lib\pom.xml</b><br />
<br />
Now that we have located them. Lets install it.<br />
Open a command prompt and navigate to <b>C:\Oracle\Middleware\wls1211\wlserver_12.1\server\lib\ </b>(or your middleware home\wlserver_12.1\server\lib)<br />
<br />
<br />
Next, execute the following command<br />
<b> </b><br />
<blockquote class="tr_bq">
<pre class="oac_no_warn"><b>mvn install -Dfile=wls-maven-plugin.jar -DpomFile=pom.xml</b></pre>
</blockquote>
<br />
<i>Normally you will see a BUILD SUCCESS at the end. </i><br />
<br />
In case you dont remember what <b>mvn install </b>is and what it does, check out this link <br />
<a href="http://maven.apache.org/plugins/maven-install-plugin/">http://maven.apache.org/plugins/maven-install-plugin/</a><br />
<br />
According to the official documentation:<br />
<blockquote class="tr_bq">
<b>is used to automatically install the project's main artifact (the JAR,
WAR or EAR), its POM and any attached artifacts (sources, javadoc, etc)
produced by a particular project. </b></blockquote>
<br />
Next, you have to call the install-file goal in order to place the files in the proper place in the local repository (<br />
as the documentation says here: <a href="http://maven.apache.org/guides/mini/guide-3rd-party-jars-local.html">http://maven.apache.org/guides/mini/guide-3rd-party-jars-local.html</a>)<br />
<br />
<blockquote class="tr_bq">
<pre class="oac_no_warn"><b>mvn install:install-file -Dfile=wls-maven-plugin.jar -DpomFile=pom.xml</b></pre>
</blockquote>
<i>Normally you will see a BUILD SUCCESS at the end. </i><br />
<i> </i><br />
The above goal, will<i> </i>set up everything properly for us. So what we have done so far is:<br />
<br />
<i>We installed the project's main artifact, which is the <b>wls-maven-plugin</b>, and we then setup everything properly to our local repository.</i><br />
<br />
How do we know that? How do we know that we have done everything ok?<br />
First of all, we have just added a new plugin into our local repository. How do we call it?<br />
Where is it installed?<br />
<br />
It is easy to find, if you paid attention to the install:install-file<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXPAEAv-BrLmAOXE9zIXNQ3WPCKz0bS9fy6feGHgjZ8hB5mE4MObIwkA95vEIWTHAPjVZZXS-3aajnSUgh4slgISIXxys_tZ2kjR2GIRaKEO7udvf0wE0OPVcHQkkfDq5VIT6YkYuri70/s1600/mvnInstallFile.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="82" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXPAEAv-BrLmAOXE9zIXNQ3WPCKz0bS9fy6feGHgjZ8hB5mE4MObIwkA95vEIWTHAPjVZZXS-3aajnSUgh4slgISIXxys_tZ2kjR2GIRaKEO7udvf0wE0OPVcHQkkfDq5VIT6YkYuri70/s320/mvnInstallFile.png" width="320" /></a></div>
<br />
<br />
ok so we know where is the plugin, under com.oracle.weblogic. But how do we call the plugin's goals?<br />
<br />
with the following command:<br />
<br />
<blockquote class="tr_bq">
<pre class="oac_no_warn"><b>mvn com.oracle.weblogic:wls-maven-plugin:help</b></pre>
</blockquote>
<pre class="oac_no_warn"> </pre>
<b> </b><br />
Now, that is a bit long, isnt it? It would be great if we could do something like the following:<br />
<b>mvn wls:help</b> ? right? It certainly looks better and easier to remember.<br />
In order to do that we have to do two things:<br />
<br />
1) <b>Assign a prefix to our plugin</b>. But wait! this is already done by Oracle. As you remember there is a pom.xml in the lib folder<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWP0G3RJjFEE9NqeqfJTS0hOxcUDYPTXD6wE7KRp9D93sNZR0xcsw79zkqvKRmnPiCxe4QMvdMg958WXAUuKh-K3I9aPKyAoeMwwnBW3ZZZPn3PgUkjKgSD5Ec3isv2YSvOsfnsyRrzes/s1600/defaultPOMPrefix.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWP0G3RJjFEE9NqeqfJTS0hOxcUDYPTXD6wE7KRp9D93sNZR0xcsw79zkqvKRmnPiCxe4QMvdMg958WXAUuKh-K3I9aPKyAoeMwwnBW3ZZZPn3PgUkjKgSD5Ec3isv2YSvOsfnsyRrzes/s320/defaultPOMPrefix.png" width="257" /></a></div>
<br />
<br />
<br />
<br />
<br />
So this means that we can skip the wls-maven-plugin part and type simply wls.<br />
More on the plugin prefixes:<br />
<a href="http://maven.apache.org/guides/introduction/introduction-to-plugin-prefix-mapping.html">http://maven.apache.org/guides/introduction/introduction-to-plugin-prefix-mapping.html </a><br />
<br />
<br />
2) <b>Map the prefix to a pluginGroup</b> for wls. In order to have it working, we have to map the new prefix to a pluginGroup. In our case, it is <b>com.oracle.weblogic</b>. We create the pluginGroup in the settings.xml of our m2 folder. In my case, it is<br />
<b>C:\Users\Dimitrios\.m2\settings.xml</b><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6HcgESNo4ABnuehSXYYHrfcW2Tz9Uaj4KdEzfxyYvPdrmuOUhXtLCN6RAqb1x2g4rYaVyKBLFlDcielOMtgP8vhnYELAV4_Gut2RgKZ9xJ-NtKrB0zVLk3pf0FOCHmwGENnRPNeI-448/s1600/pluginGroup.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="79" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6HcgESNo4ABnuehSXYYHrfcW2Tz9Uaj4KdEzfxyYvPdrmuOUhXtLCN6RAqb1x2g4rYaVyKBLFlDcielOMtgP8vhnYELAV4_Gut2RgKZ9xJ-NtKrB0zVLk3pf0FOCHmwGENnRPNeI-448/s320/pluginGroup.png" width="320" /></a></div>
As you can see, we have now added a pluginGroup that will help us work with our prefix.<br />
<br />
Lets try now the following:<br />
<br />
<blockquote class="tr_bq">
<b>mvn wls:help</b></blockquote>
<b> </b>Nice isnt it?? If everything went well, it will print you the list of goals of this plugin followed by a BUILD SUCCESS.<br />
<br />
<b>How to Use it.</b><br />
We have done the learning..<br />
We have done the setup<br />
We have done the configuration<br />
<br />
Let us now make it all work together!<br />
<br />
First things first. We have to include our new plugin (wls) in our maven application.<br />
In order to do that, we have to edit the pom.xml file in each of our applications.<br />
<br />
In both cases we have to add the following:<br />
<blockquote class="tr_bq">
<b> <plugin><br /> <groupid>com.oracle.weblogic</groupid><br /> <artifactid>wls-maven-plugin</artifactid><br /> <version>12.1.1.0</version><br /> </plugin></b> </blockquote>
<br />
<br />
<b>CmdMvnApp pom.xml (no IDE app): </b><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-rQZGOrG1272755l29RQw8cjjy1uctEt0eKNGl-f8us3o3FLL3MQXJObyuXgMSyUfy9sqcdFG33JHhbpOg_0JNOxvcmHeBzO5l6DeihNUsGl82TAMdy5DrhtiXu3mcGefwYjdblzy7Ss/s1600/cmdMVNAppPLugin.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="203" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-rQZGOrG1272755l29RQw8cjjy1uctEt0eKNGl-f8us3o3FLL3MQXJObyuXgMSyUfy9sqcdFG33JHhbpOg_0JNOxvcmHeBzO5l6DeihNUsGl82TAMdy5DrhtiXu3mcGefwYjdblzy7Ss/s320/cmdMVNAppPLugin.png" width="320" /></a></div>
<br />
<br />
Then go to cmd line and navigate to the location of the pom.xml of the project and type<br />
<br />
<blockquote class="tr_bq">
<b>mvn package</b></blockquote>
<br />
<b>NetbeansMvnApp pom.xml (Netbeans app):</b><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_-CfKg4DBKbC8kDOEh7ASmHD3bgGp1pP6W0NpucxdEHTN9w8gcXcAARNfLvx3F58dy6Nliipcrrkp0GNZSW9pusxH1tSZxWTzua1ybPBEaDnIX0ehvaeK-xTCrVmf-w2HWjMiHcGyvkA/s1600/netbeansProjectPluginAddition.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="220" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_-CfKg4DBKbC8kDOEh7ASmHD3bgGp1pP6W0NpucxdEHTN9w8gcXcAARNfLvx3F58dy6Nliipcrrkp0GNZSW9pusxH1tSZxWTzua1ybPBEaDnIX0ehvaeK-xTCrVmf-w2HWjMiHcGyvkA/s320/netbeansProjectPluginAddition.png" width="320" /></a></div>
<br />
Build the Project: <br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTP3RWV-lV1BWaRo4Izve_f1_c_gCT9vdLdg3JeRcjWfPb0MPfINBoZC6RY-npUWnxYbKx2CTCm_44tHKWrYXojPqENjZ9lPvk4MD9iSHMny-sIIkuJ-G8oblzvDiLNYiahWe06Ig4mg8/s1600/netbeansCleanAndBuild.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="274" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTP3RWV-lV1BWaRo4Izve_f1_c_gCT9vdLdg3JeRcjWfPb0MPfINBoZC6RY-npUWnxYbKx2CTCm_44tHKWrYXojPqENjZ9lPvk4MD9iSHMny-sIIkuJ-G8oblzvDiLNYiahWe06Ig4mg8/s320/netbeansCleanAndBuild.png" width="320" /></a></div>
<br />
<br />
<br />
Next step is to deploy! right?<br />
wrong.. Why? simply because, we have to answer some logical questions..<br />
<br />
-<b>Where are we going to deploy the application?</b> <br />
hmm... you didnt see that coming right?<br />
Wait wait wait... according to the official documentation:<br />
<a href="http://docs.oracle.com/cd/E24329_01/web.1211/e24368/maven.htm#autoId2">http://docs.oracle.com/cd/E24329_01/web.1211/e24368/maven.htm#autoId2</a><br />
<br />
<blockquote class="tr_bq">
The <code>wls-maven-plugin</code> follows the Maven theme and uses a
convention-over-configuration approach. Thus, for a set of commonly used
configuration elements, the plug-in supplies an appropriate, consistent
set of default values that you can use across all of the goals. This
reduces the degree of configuration required for you to use the plug-in
and helps you to achieve uniform goal executions, even in different
environments. The common configuration elements and their default values
are:</blockquote>
<ul>
<li><blockquote>
<code>middlewareHome</code>: <code>${basedir}/Oracle/Software</code>, where <code>${basedir}</code> is the standard Maven project property which represents the directory containing the current Maven project.</blockquote>
</li>
<li><blockquote>
<code>weblogicHome</code>: <code>wlserver</code> or <code>wlserver_12.1</code> depending on the install type.</blockquote>
</li>
<li><blockquote>
<code>domainHome</code>: <code>${basedir}/Oracle/Domains</code></blockquote>
</li>
<li><blockquote>
<code>source</code>: <code>${project.build.directory}/${project.artifactId}.${project.packaging}</code></blockquote>
</li>
<li><blockquote>
<code>adminurl</code>: <code>t3://localhost:7001</code></blockquote>
</li>
</ul>
Now, according to this, we should be able to deploy just like that. Right? Wrong..<br />
-=Why do you keep saying wrong all the time!!!!<br />
ok. just try it then.<br />
<br />
I will!<br />
<blockquote class="tr_bq">
<b>mvn wls:deploy </b></blockquote>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaxXekU6LdIpW4qy7wD8_zIReU-7n7i_GgBNIW9fKdr_8cB5J55bMKhWbwOSqFslBdilpGYvy7yGqCGNdUe-2OQpYfc-dsHwYz8LODkgWLyLaCBEBvPcYB5AIyVkFVU92tQeNzxooeK6o/s1600/buildFailureOnDeploy.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="86" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaxXekU6LdIpW4qy7wD8_zIReU-7n7i_GgBNIW9fKdr_8cB5J55bMKhWbwOSqFslBdilpGYvy7yGqCGNdUe-2OQpYfc-dsHwYz8LODkgWLyLaCBEBvPcYB5AIyVkFVU92tQeNzxooeK6o/s320/buildFailureOnDeploy.png" width="320" /></a></div>
<br />
<br />
<br />
<br />
Hmmm.. something went wrong...<br />
No kidding..<br />
A few questions first..<br />
Why did we use the <b>wls:deploy </b>?<br />
Founded it here:<br />
<a href="http://docs.oracle.com/cd/E24329_01/web.1211/e24368/maven.htm#autoId3">http://docs.oracle.com/cd/E24329_01/web.1211/e24368/maven.htm#autoId3</a><br />
<br />
<br />
<blockquote class="tr_bq">
Deploys WebLogic Server applications and modules. Supports all deployment formats; for example, WAR, JAR, and such</blockquote>
<br />
Oh ok.<br />
<br />
So based on that, lets start the server then..<br />
<br />
<blockquote class="tr_bq">
<b>mvn wls:start-server</b></blockquote>
hmmmm... still the same error..<br />
Ofcourse it is the same error!!<br />
Read carefully:<br />
<code>middlewareHome</code>: <code>${basedir}/Oracle/Software</code>, where <code>${basedir}</code> is the<b> standard Maven project property which represents the directory containing the current Maven project</b>.<br />
<br />
Is there any chance (in this series of articles) to have your Middlware home inside the Maven project?<br />
<br />
Right. So. we have to set the proper middlware home value and probably more values prior to deploying.<br />
<br />
Lets focus on <b>starting the Weblogic Server 12c with Maven</b>.<br />
For the sace of this example, we are going to use some parameters of the start-server goal as described in the official documentation.<br />
<a href="http://docs.oracle.com/cd/E24329_01/web.1211/e24368/maven.htm#autoId12">http://docs.oracle.com/cd/E24329_01/web.1211/e24368/maven.htm#autoId12 </a><br />
<br />
Ok, so we see in the above link that we have to configure several parameters prior to starting the weblogic server. In order to do that, we have to <b>configure our Maven weblogic plugin with the appropriate values.</b><br />
<br />
Configuring the Maven plugin is fairly easy. Here is a refresher<br />
<a href="http://maven.apache.org/guides/mini/guide-configuring-plugins.html#Configuring_Parameters">http://maven.apache.org/guides/mini/guide-configuring-plugins.html#Configuring_Parameters</a><br />
<br />
So in this example, the following configuration will be enough to start the server:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaz8IgHgZMOD3Mp2LbXhL6n1No2dbTh6-oHjfJIbK1sfflqZ-hlHvTIUvlTIslc6XEYApRRl5LeWM0BtK14miOEoQw3zTE0jEeuR6cyR72wMJqXK1Ov9BlMfWYayHpVxHe9GmTD1xM_s0/s1600/startServerMvnPLugin.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="89" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaz8IgHgZMOD3Mp2LbXhL6n1No2dbTh6-oHjfJIbK1sfflqZ-hlHvTIUvlTIslc6XEYApRRl5LeWM0BtK14miOEoQw3zTE0jEeuR6cyR72wMJqXK1Ov9BlMfWYayHpVxHe9GmTD1xM_s0/s320/startServerMvnPLugin.png" width="320" /></a></div>
<br />
<br />
Now, go ahead and type <b>mvn wls:start-server</b> (remember that you are executing a command from within the Maven project folder where the pom.xml resides.)<br />
<br />
After a few seconds you will the following message:<br />
<br />
<i>Server started successful</i><br />
Now, go and test your console. Go to a browser and type localhost:7001/console (or whatever your ip and port)<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMbhRt8dc2qvbhdusC9XTZRnfIJ-7xpNvHdooCxxPCMJWuuFl1CaWPt5IVFT855HCmuQ4uk7Qq3TeXAxbmP2SAALY2bPfW7SabY8t7HQWTGLsN0dx9XcwzIa7Y-utK1rzbf0-HtMDyKjg/s1600/weblogicStarted.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="146" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMbhRt8dc2qvbhdusC9XTZRnfIJ-7xpNvHdooCxxPCMJWuuFl1CaWPt5IVFT855HCmuQ4uk7Qq3TeXAxbmP2SAALY2bPfW7SabY8t7HQWTGLsN0dx9XcwzIa7Y-utK1rzbf0-HtMDyKjg/s320/weblogicStarted.png" width="320" /></a></div>
<br />
<br />
Tadaaaa!!<br />
Nice isnt it??<br />
Hang on!<br />
What?<br />
What if I do it again?<br />
What do you mean?<br />
What if I type the same command again! Will I crash it???<br />
Nope:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiY6mwR5ifwaaibNnAFRpaDMZIwDOdh8SXxg3QWp8udb_w1Z_kdbpKfGBP7X8DAXyTWk6GQO8Se5WXqg78s4a_OoXdIGCCmDIs4VF-d2etVpl7qU3tHLIEwP9xnfwBI4aqYjoCJV0EiQLE/s1600/ServerAlreadyUp.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="104" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiY6mwR5ifwaaibNnAFRpaDMZIwDOdh8SXxg3QWp8udb_w1Z_kdbpKfGBP7X8DAXyTWk6GQO8Se5WXqg78s4a_OoXdIGCCmDIs4VF-d2etVpl7qU3tHLIEwP9xnfwBI4aqYjoCJV0EiQLE/s320/ServerAlreadyUp.png" width="320" /></a></div>
<br />
<br />
<br />
<br />
See?? All good. I am sure you can change the maven plugin configuration in order to be able to stop the weblogic server.<br />
<br />
<b>Gonfiguration for deployment.</b><br />
We will update the current configuration in order to be able to deploy our application<b> </b>onto Weblogic (expecially now that we have it up and running!!). Hopefully by now, you will not need to read further and you will be able to make the adjustments on your own.<br />
However, here is the configuration.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwlkEpkd3E6-YEkXbhyphenhyphen9WIvzwa7CLJYJwEcGHJ9tMHXpL7pAki544m43jVEi9UgjZ1Z7tCaGKF5hWr4tvtZjoC941uPVXmdNuthil9ZwHaSkyJ60u3_Ja-pZOWacXeLzDhjC-HzXWhS3U/s1600/deployTheAppMvNConf.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="116" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwlkEpkd3E6-YEkXbhyphenhyphen9WIvzwa7CLJYJwEcGHJ9tMHXpL7pAki544m43jVEi9UgjZ1Z7tCaGKF5hWr4tvtZjoC941uPVXmdNuthil9ZwHaSkyJ60u3_Ja-pZOWacXeLzDhjC-HzXWhS3U/s320/deployTheAppMvNConf.png" width="320" /></a></div>
<br />
<br />
On the Command Line type <b>mvn wls:deploy</b><br />
and thats it!<br />
<b> </b> <br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0Mz-d6s83jbyphTzFyEGA8FQ4jUeqs1z8jGDM-yjA2xRwcSEBh3uXNgNqqsYwudn79J5fL_DhN9Erbot643pttCZJUP6GKagxlNlwiJkZvNgNknK9scIcYtShy_X4qYqJy8RhZkYvx24/s1600/CMdMvnAppDeployed.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="56" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0Mz-d6s83jbyphTzFyEGA8FQ4jUeqs1z8jGDM-yjA2xRwcSEBh3uXNgNqqsYwudn79J5fL_DhN9Erbot643pttCZJUP6GKagxlNlwiJkZvNgNknK9scIcYtShy_X4qYqJy8RhZkYvx24/s320/CMdMvnAppDeployed.png" width="320" /></a></div>
<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbaRYSK6ZvlpLN0DmBtzMMPVGzwiJ29pTsX8Vg4uJ85i3ruI542qPmEKR7Okd21C68jCOhUR1hnsQEXViguub4dHPCkl07YxQ3GfcXintgEN3C22Kp-sETLq_PiLt3crVMEyVPO_673fo/s1600/CmdMvnAppDeploymentShown.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="146" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbaRYSK6ZvlpLN0DmBtzMMPVGzwiJ29pTsX8Vg4uJ85i3ruI542qPmEKR7Okd21C68jCOhUR1hnsQEXViguub4dHPCkl07YxQ3GfcXintgEN3C22Kp-sETLq_PiLt3crVMEyVPO_673fo/s320/CmdMvnAppDeploymentShown.png" width="320" /></a></div>
<br />
<br />
<br />
So here we are! we managed to deploy our application from the command line using Maven!!!<br />
<br />
Now, in order to finalize this series, we are going to do the same with Netbeans.<br />
First we update the pom.xml of the <b>NetbeansMvnApp</b> as the previous one (<b>CmdMvnApp</b>)<br />
Next, we have to create a goal in NetBeans for this project:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiS6kV6Khclwdzt4qF4KCuJZ0Gi4z3sOpDcJ4qmAVhXw0kQ8LZ98fAdHxJdGV9QtJHnEfXi7gCSBXqoYG60D6GqHTnrP3HXqC-4bRZ3uazKlfEej8UpYTmx9KUDUOsEH1Vpy6V0QygKuog/s1600/createGoalMavenNetbeans.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="243" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiS6kV6Khclwdzt4qF4KCuJZ0Gi4z3sOpDcJ4qmAVhXw0kQ8LZ98fAdHxJdGV9QtJHnEfXi7gCSBXqoYG60D6GqHTnrP3HXqC-4bRZ3uazKlfEej8UpYTmx9KUDUOsEH1Vpy6V0QygKuog/s320/createGoalMavenNetbeans.png" width="320" /> </a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrIp7Gy7Ii2KBddSgtjsYfTDSrNqU1ie8gum-owh5dkLWYstnPBKoUb_yzlpgud5x0uGQrLnEDgPeNEPKATQuPcoxZgWNqDLguRhneVBmYPp0R4-_tQvOsAn3rtSkAjjNetKMszVp4SQo/s1600/defineGoalNetbeans.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="224" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrIp7Gy7Ii2KBddSgtjsYfTDSrNqU1ie8gum-owh5dkLWYstnPBKoUb_yzlpgud5x0uGQrLnEDgPeNEPKATQuPcoxZgWNqDLguRhneVBmYPp0R4-_tQvOsAn3rtSkAjjNetKMszVp4SQo/s320/defineGoalNetbeans.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZUgD-SwAq3_TwCY4rPlAq38c7_154wU7C1e7lbbDm0vyom7d2WWtTt_iNFOSJwYtEipNcGbzDhCSEQTIEaxWJEYmrcE8ISbP_-omHU3INvJCc7xiNRWbp2OPw7f1dqkIfvzxa7xAstFw/s1600/createGoalNetBeans.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br /></a></div>
<br />
And thas it!<br />
This will deploy the application onto Weblogic!<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgI8ZMsAneFApPPvY0lpegXx0zSLb09inEElJCfsSw1r18w0fVQyqGlp8bNCYo43_3BtKAHmmWDTgubdlDN4bNDx5mff4N378guwRkYgxGeH-FjRdnjCvsYgBuqRxHnqYHrlxWFbqXaZpM/s1600/allDeployed.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="146" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgI8ZMsAneFApPPvY0lpegXx0zSLb09inEElJCfsSw1r18w0fVQyqGlp8bNCYo43_3BtKAHmmWDTgubdlDN4bNDx5mff4N378guwRkYgxGeH-FjRdnjCvsYgBuqRxHnqYHrlxWFbqXaZpM/s320/allDeployed.png" width="320" /></a></div>
<br />
<br />
<br />
<br />
<br />
It wasnt that hard! was it??<br />
<br />
Of course there are many other goals to configure such as re-deploy, stop-server etc. But I am pretty sure that it will be straightforward from now on!<br />
Still confused?<br />
<a href="http://dstas.blogspot.com/2013/04/maven-toweblogic-part1.html">Start Over! </a><br />
Regards.<br />
<br />
<br />
<br /></div>
Anonymoushttp://www.blogger.com/profile/03186199307026201300noreply@blogger.com1tag:blogger.com,1999:blog-294172151396534006.post-80463734208455976352013-04-03T04:13:00.001-07:002013-04-03T04:14:58.906-07:00Maven Deploy to Oracle Weblogic. Step By Step. The Basics. Part 3/4<div dir="ltr" style="text-align: left;" trbidi="on">
Hi,<br />
This is a series of four (4) articles that will describe how to use Maven and deploy a sample application to Weblogic.<br />
<br />
Contents of each part:<br />
<ul style="text-align: left;">
<li><a href="http://dstas.blogspot.com/2013/04/maven-toweblogic-part1.html">Part 1: <b>Maven</b>. Provide the general idea of Maven and install it on <b>Windows</b>.</a></li>
<li><a href="http://dstas.blogspot.com/2013/04/maven-toweblogic-part2.html">Part 2:<b> Weblogic</b>. Provide the general idea of Weblogic and install it on <b>Windows</b>.</a></li>
<li>Part 3: <b>Sample Maven Applications</b>. We will create three sample maven applications. One with Netbeans and one without any IDE.</li>
<li><a href="http://dstas.blogspot.com/2013/04/maven-toweblogic-part4.html">Part 4: <b>Configuration and Deployment.</b> We will configure everything and we will deploy the applications to Weblogic</a>.</li>
</ul>
<br />
<i><b>There are no assumptions here and we are going to do everything from scratch.</b></i><br />
<br />
There is always a person out there that will have to use those technologies together without knowing any of them.<br />
<br />
So far we have learned about Maven and Weblogic. So far we have no connection between those two tools.<br />
In this article, we are going to create our applications using mvn in three ways.<br />
One with the cmd prompt by executing maven commands.<br />
One using Netbeans 7.3<br />
<br />
In case you need a small refresher about Maven and the general idea behind it, jump to <a href="http://dstas.blogspot.com/2013/04/maven-toweblogic-part1.html">Part 1</a> before continuing.<br />
<br />
In our case, we are going to keep things quite simple. We are just going to use a java web application with one jsp saying Hello World! Nothing more.<br />
As mentioned earlier, we are going to create three projects in three different ways.<br />
<br />
<b>Maven command line</b>.<br />
In order to create a new project, first make sure that you have maven installed. On a Windows machine, open the command prompt and type <b>mvn --version</b><br />
If everything is ok, you will something similar to this:<br />
<br />
<blockquote class="tr_bq">
<b>Apache Maven 3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19 13:51:<br />28+0000)</b></blockquote>
....<br />
<br />
Next, using the command line, navigate to a folder (or create one..) that will store our sample projects.<br />
In this example we are going to use the following path <br />
<blockquote class="tr_bq">
<b>C:\Users\Dimitrios\mavenToWeblogic></b></blockquote>
Now we are ready to fly!<br />
<br />
As we found out in part one, Maven has plugins with goals. Additionally, we create Maven based projects. But how?<br />
<br />
<u><b>Archetype </b></u>plugin comes to play.<br />
According to the official documentation<br />
(content extracted from <a href="http://maven.apache.org/guides/introduction/introduction-to-archetypes.html">http://maven.apache.org/guides/introduction/introduction-to-archetypes.html</a> ) <br />
<br />
<blockquote class="tr_bq">
In short, Archetype is a Maven project templating toolkit. An archetype is defined as <i>an original pattern or model from which all other things of the same kind are made</i>.
The names fits as we are trying to provide a system that provides a
consistent means of generating Maven projects. Archetype will help
authors create Maven project templates for users, and provides users
with the means to generate parameterized versions of those project
templates.<br />
........<br />
You may want to standardize
J2EE development within your organization so you may want to provide
archetypes for EJBs, or WARs, or for your web services. Once these
archetypes are created and deployed in your organization's repository
they are available for use by all developers within your organization.</blockquote>
<br />
<br />
<br />
As you can see, the Archetype plugin helps us create maven project based on some predefined templates. In other words, it creates the project for us with a specific structure. This is very helpful when it comes to large application where a lot of projects have to be created.<br />
<br />
Can we create our own archetypes?<br />
Yes we can.<br />
<br />
Are we going to create our own archetype?<br />
No we wont. But here is the official documentation <a href="http://maven.apache.org/guides/mini/guide-creating-archetypes.html">http://maven.apache.org/guides/mini/guide-creating-archetypes.html</a><br />
<br />
Why not? We dont itend to replace the official documentation here.. We just learn what we need to perform our task which is to deploy a maven application to weblogic using maven.<br />
<br />
Maven has a long list of archetypes. In order to see that list type the following on your command prompt:<br />
<blockquote class="tr_bq">
<b><br /></b>
<b>mvn archetype:generate</b></blockquote>
<br />
First you will see that maven is downloading the archetype plugin and then is resolving any dependences for that plugin and goal. Next it is going to print a very long list of archetypes. At the end, it will ask you to choose which one you want to use.<br />
Sure, you can go through the list and pick one, as you see it has a default one with number 254.<br />
For more information check:<br />
<a href="http://maven.apache.org/archetype/maven-archetype-plugin/usage.html">http://maven.apache.org/archetype/maven-archetype-plugin/usage.html</a><br />
<br />
In our case, we want to create a <b>webapp</b>. Since we already have a very long list of archetypes, how are we going to find the correct number?<br />
One way is to find the right number from the list.<br />
Another way is to re-filter the list by providing some keywords. Instead of number, try typing<br />
<b>archetype-webapp</b> and hit enter.<br />
<br />
The above will narrow down the list. However most probably you will see more than one options. The one we are looking for is:<br />
<br />
<blockquote class="tr_bq">
<b>remote -> org.apache.maven.archetypes:maven-archetype-webapp (An archetype <br />which contains a sample Maven Webapp project.)</b></blockquote>
So, hit the number you see for that option, or, re-filter it by typing<br />
<b>maven-archetype-webapp </b>and<b> hit enter</b>.<br />
<br />
This will give only one option with number 1.<br />
<b>Type 1 and hit enter. </b><br />
<br />
Next you will be asked for the version of the archetype.<br />
Choose the latest stable one.<br />
By the time of this writting, 1.0 was the latest version.<br />
<b>Type the number of the option and hit enter.</b><br />
<br />
<br />
Next, the process will ask you to specify a groupId.<br />
<br />
<b>What is a groupId?</b><br />
According to the official documenation<br />
( From <a href="http://maven.apache.org/guides/getting-started/index.html#How_do_I_make_my_first_Maven_project">http://maven.apache.org/guides/getting-started/index.html#How_do_I_make_my_first_Maven_project</a> )<br />
<blockquote class="tr_bq">
<b>groupId</b> This element indicates the unique identifier of the
organization or group that created the project. The groupId is one of
the key identifiers of a project and is typically based on the fully
qualified domain name of your organization. For example <tt>org.apache.maven.plugins</tt> is the designated groupId for all Maven plug-ins.</blockquote>
<br />
( From <a href="http://maven.apache.org/pom.html"> http://maven.apache.org/pom.html</a> ) <br />
<blockquote class="tr_bq">
<b>groupId</b>: This is generally unique amongst an organization or a
project. For example, all core Maven artifacts do (well, should) live
under the groupId org.apache.maven. Group ID's do not necessarily use
the dot notation, for example, the junit project. Note that the
dot-notated groupId does not have to correspond to the package structure
that the project contains. It is, however, a good practice to follow.
When stored within a repository, the group acts much like the Java
packaging structure does in an operating system. The dots are replaced
by OS specific directory separators (such as '/' in Unix) which becomes a
relative directory structure from the base repository. In the example
given, the <tt>org.codehaus.mojo</tt> group lives within the directory <tt>$M2_REPO/org/codehaus/mojo</tt>.</blockquote>
<br />
So in other words, we have to provide a unique name for our organization.<br />
Since this is an example, we have an example organization.<br />
<br />
<b>Type <u>com.organization.example</u> and hit enter.</b><br />
<br />
After that is done, the process asks for an artifactId<br />
<br />
<b>What is an artifactId?</b><br />
Well, according to the official documentation<br />
(from <a href="http://maven.apache.org/guides/getting-started/index.html#How_do_I_make_my_first_Maven_project">http://maven.apache.org/guides/getting-started/index.html#How_do_I_make_my_first_Maven_project </a>)<br />
<blockquote class="tr_bq">
<b><b>artifactId</b> </b>This element indicates the unique base name of the
primary artifact being generated by this project. The primary artifact
for a project is typically a JAR file. Secondary artifacts like source
bundles also use the artifactId as part of their final name. A typical
artifact produced by Maven would have the form
<artifactid>-<version>.<extension> (for example, <tt>myapp-1.0.jar</tt>).<b> </b></extension></version></artifactid></blockquote>
(from <a href="http://maven.apache.org/pom.html">maven.apache.org/pom.html</a> )<br />
<blockquote class="tr_bq">
<b>artifactId</b>: The artifactId is generally the name that the project
is known by. Although the groupId is important, people within the group
will rarely mention the groupId in discussion (they are often all be
the same ID, such as the <a class="externalLink" href="http://mojo.codehaus.org/">Codehaus Mojo</a> project groupId: <tt>org.codehaus.mojo</tt>).
It, along with the groupId, create a key that separates this project
from every other project in the world (at least, it should :) ). Along
with the groupId, the artifactId fully defines the artifact's living
quarters within the repository. In the case of the above project, <tt>my-project</tt> lives in <tt>$M2_REPO/org/codehaus/mojo/my-project</tt>.</blockquote>
<br />
So in our case, the artifact will be:<br />
<b><u>CmdMvnApp </u>. Hit enter.</b><br />
<br />
Next, the process will ask you for the <b>version </b>of the project. Since this is an example, we can leave it as is.<br />
<b>Just hit enter</b>,<br />
<br />
Next, the process will ask you for the <b>package</b>.<br />
<br />
The screen already defines the default value of the package option.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUqgDaZXrSMxnhnAlPD1Zoy-xolvpxTneaZE5-xI6WNxlnlpQ1Rkhn6tdfq5p217RYnmq0L-LDPZ6WLA0UicR4J_wuI_BvZqEkARke0HZ-h4vK1CrS0BcOQryVlosn2O_jiushHiNX71g/s1600/cmMvnPackageOption.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="161" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUqgDaZXrSMxnhnAlPD1Zoy-xolvpxTneaZE5-xI6WNxlnlpQ1Rkhn6tdfq5p217RYnmq0L-LDPZ6WLA0UicR4J_wuI_BvZqEkARke0HZ-h4vK1CrS0BcOQryVlosn2O_jiushHiNX71g/s320/cmMvnPackageOption.png" width="320" /></a></div>
<br />
the package value is optional and it represents<br />
Next, it shows a list with our options for confirmation:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAUc_oqm4eRi0y2fWVH05vbxJUuApfsu9055d9wk8GEVm-xm6GBVRTkYOJJDnXQZMttHLejf7nCwhfpdyUynOt1ijxT7VIFD44rcHL_clLllgduRG8iJhh1wSi3OoPfvUtGb7Yg-1NgoY/s1600/confirmSetupMvn.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="161" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAUc_oqm4eRi0y2fWVH05vbxJUuApfsu9055d9wk8GEVm-xm6GBVRTkYOJJDnXQZMttHLejf7nCwhfpdyUynOt1ijxT7VIFD44rcHL_clLllgduRG8iJhh1wSi3OoPfvUtGb7Yg-1NgoY/s320/confirmSetupMvn.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<br />
<b>Hit Enter to proceed.</b><br />
<br />
Maven will create the project and it will notify us upon completion.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwgPD61qbci6ZPpetg-1iSMhVY8tuk4vxNEVIMX4o4VobxvfVDuNg8OoCsY4CRLh2jJDI-nJg9ay7bQkIyZJpI44Dh4uOFzXYxYjTv__UY1Fp2o9nEbfb-v_nL3jkYtSN22tHefEjZSNo/s1600/mvnDone.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="161" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwgPD61qbci6ZPpetg-1iSMhVY8tuk4vxNEVIMX4o4VobxvfVDuNg8OoCsY4CRLh2jJDI-nJg9ay7bQkIyZJpI44Dh4uOFzXYxYjTv__UY1Fp2o9nEbfb-v_nL3jkYtSN22tHefEjZSNo/s320/mvnDone.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
And thats it!! We have just created a Maven application from the command line!!<br />
If you go and check your mavenToWeblogic folder(or the name you have specified) you will see that we have a new folder called <b>CmdMvnApp</b>.<br />
<br />
<b>The important stuff.</b><br />
As you have alreay noticed, inside our new application, there is a file called <b>pom.xml</b><br />
<br />
<b>What is a pom.xml ?</b><br />
According to the official documentation<br />
(from <a href="http://maven.apache.org/pom.html#What_is_the_POM">http://maven.apache.org/pom.html#What_is_the_POM </a>)<br />
<blockquote class="tr_bq">
<b>POM </b>stands for "Project Object Model". It is an XML representation of a Maven project held in a file named <tt>pom.xml</tt>.
When in the presence of Maven folks, speaking of a project is speaking
in the philosophical sense, beyond a mere collection of files containing
code. A project contains configuration files, as well as the developers
involved and the roles they play, the defect tracking system, the
organization and licenses, the URL of where the project lives, the
project's dependencies, and all of the other little pieces that come
into play to give code life. It is a one-stop-shop for all things
concerning the project. In fact, in the Maven world, a project need not
contain any code at all, merely a <tt>pom.xml</tt>.<b> </b></blockquote>
So in a nutshell: The POM holds the information of our project. It holds the dependencies, the plugins to be used etc..<br />
<br />
Let see what our pom file has so far. if you open it with your preffered editor, you will something like the folowing:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNe-SkPJFCX6CzDH4MrW53Ad8ZveZvHcvrnGS6j-fPDFB7TJJYLvsQADOqGoYbU6fm5jOAcocJ-8DndT2yYFbafknfykAO3Wa7k_2lGo8zAYVenZqd5k1tdl7IW3qyV0Hs1J3ZBaRy008/s1600/createdPOM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="140" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNe-SkPJFCX6CzDH4MrW53Ad8ZveZvHcvrnGS6j-fPDFB7TJJYLvsQADOqGoYbU6fm5jOAcocJ-8DndT2yYFbafknfykAO3Wa7k_2lGo8zAYVenZqd5k1tdl7IW3qyV0Hs1J3ZBaRy008/s320/createdPOM.png" width="320" /></a></div>
<br />
<br />
You can easily identify the values we have set a while back during our command line process.<br />
Furhtermore, you will see that Maven has added a dependency without asking us. That is the dependency of JUnit for unit testing.<br />
Maven strongly believes that we should do some unit testing!<br />
In case you never heard of JUnit, have a look here<br />
<a href="http://junit.org/">http://junit.org/</a><br />
<br />
<br />
We are not going to dive to unit testing in the article since it is out of scope. But I highly encourage you to use it if you havent done already. It will free your mind and your code!<br />
<br />
What have we done so far? We have create a full java web app!!!<br />
Congratulations!<br />
We wont be doing anything else in this part of the article. The kinky details are comming up in the next and final part of this series.<br />
<br />
<b>Doing the same thing with Netbeans 7.3</b><br />
We are going to do the same thing with Netbeans 7.3. We will create a new maven application.<br />
<br />
<b>Get Netbeans 7.3</b><br />
Netbeans 7.3 is the latest version at the time of this writting.. feel free to get the latest version<br />
<a href="http://netbeans.org/downloads/">http://netbeans.org/downloads/</a><br />
You could start with the JEE version.. <br />
<br />
Installation is pretty straightforward. Just call the executable. And the wizard is pretty simple.<br />
As soon as you have your Netbeans installed, start it!<br />
<br />
Netbeans comes with a bundled version of Maven. Since we have already installed Maven on our machine, it would be good to use that version.<br />
<br />
Go to <b>tools->options, select JAVA and then select Maven tab:</b><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMqDusHO9LGl5U6PSbbq7DyCPdHbkJeTqTPQZOYHJeWPXKhZoN8PNtrmC3Ok-TkbR5NPZl6CPU4zl3P9XLSlfrhqMJGGIFeLz4AI0OqsUewEdvfFJXfy-w84vmmq5YtnS7JyKe2PkT14g/s1600/mavenSetup.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="271" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMqDusHO9LGl5U6PSbbq7DyCPdHbkJeTqTPQZOYHJeWPXKhZoN8PNtrmC3Ok-TkbR5NPZl6CPU4zl3P9XLSlfrhqMJGGIFeLz4AI0OqsUewEdvfFJXfy-w84vmmq5YtnS7JyKe2PkT14g/s320/mavenSetup.png" width="320" /></a></div>
<br />
OK. now we have the same Maven version on Netbeans.<br />
<br />
Let create the maven application!<br />
<br />
Then, select <b>file-> new project</b>.<br />
You will see a dialog where you will get to choose the type of the project:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOZMxrsUWrMsbNNFZwQ_ClvYQjixOEOzb1FawVBcnzRT6e9TPbWT1GMOi2Bjt6qj4TEK76BvYrq1q1y0nMt8TItv9o5u2n2Qr1PThRvBoQhG9QQLhZwBngGLoWixaF1rliGfSzJSSHf6c/s1600/newMavenProjectNB.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="149" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOZMxrsUWrMsbNNFZwQ_ClvYQjixOEOzb1FawVBcnzRT6e9TPbWT1GMOi2Bjt6qj4TEK76BvYrq1q1y0nMt8TItv9o5u2n2Qr1PThRvBoQhG9QQLhZwBngGLoWixaF1rliGfSzJSSHf6c/s320/newMavenProjectNB.png" width="320" /></a></div>
<br />
<br />
and guess what! we want a java web app!<br />
hit next<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjXTsieDHg-npj6H_z6Og5fsps-eV1WIaCwWfsZhqYYalyiwB1Tz1zYmrKF3fxUIN5w3pBF43M0bAfDj1fuPFWdbj0UU5TatNnJiRuc3FWcv0VoBJs4BpSCzTKaMKi108rzVCA6KKB5ZU/s1600/nbNameAndLocation.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="226" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjXTsieDHg-npj6H_z6Og5fsps-eV1WIaCwWfsZhqYYalyiwB1Tz1zYmrKF3fxUIN5w3pBF43M0bAfDj1fuPFWdbj0UU5TatNnJiRuc3FWcv0VoBJs4BpSCzTKaMKi108rzVCA6KKB5ZU/s320/nbNameAndLocation.png" width="320" /></a></div>
<br />
It looks shinny doesnt it?<br />
<br />
I am sure you can spot the artifactId, groupId and so on. One thing to notice here is the difference in the default package netbeans provides. It adds up the artifactId in the package suggestion. You can leave it as is if you want. I have removed the ending part just to make a difference. xD<br />
<br />
hit next.<br />
<br />
Then it will ask you to use a server. Leave it balnk.<b> No server selected</b>. <br />
hit finish.<br />
<br />
Thats it!<br />
<br />
We now have bright new maven application.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHssG_ET4tHFTuG6C3II9QCxl_jQGuUmuJvmSm7yXNf8QMqi62d3tDsejQ8k3syk1dYRMcJvOy6lP5ubbjh96K-L-YmTErBDrYxrODWBbM2rjx8gkQLB5i4EZwy2gQbnowKWrOUDD7BoU/s1600/netbeansAppDone.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="112" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHssG_ET4tHFTuG6C3II9QCxl_jQGuUmuJvmSm7yXNf8QMqi62d3tDsejQ8k3syk1dYRMcJvOy6lP5ubbjh96K-L-YmTErBDrYxrODWBbM2rjx8gkQLB5i4EZwy2gQbnowKWrOUDD7BoU/s320/netbeansAppDone.png" width="320" /></a></div>
<br />
As you can see, Netbeans produces a bit longer pom.xml file with more dependencies and plugins.<br />
<br />
The bottom line is that, we have another web app!<br />
<br />
We wont be dealing with the details of the pom.xml for the time being as it will lead to full blown book and we dont want that!<br />
<br />
That is about it!<br />
<br />
Lets go now to the final part of this series where put everything together and we deploy our applications using Maven:<br />
<a href="http://dstas.blogspot.com/2013/04/maven-toweblogic-part4.html">http://dstas.blogspot.com/2013/04/maven-toweblogic-part4.html</a></div>
Anonymoushttp://www.blogger.com/profile/03186199307026201300noreply@blogger.com0tag:blogger.com,1999:blog-294172151396534006.post-91234804976998962342013-04-03T04:12:00.001-07:002013-04-03T04:14:58.908-07:00Maven Deploy to Oracle Weblogic. Step By Step. The Basics. Part 1/4<div dir="ltr" style="text-align: left;" trbidi="on">
Hi,<br />
This is a series of four (4) articles that will describe how to use Maven and deploy a sample application to Weblogic.<br />
<br />
Contents of each part:<br />
<ul style="text-align: left;">
<li>Part 1: <b>Maven</b>. Provide the general idea of Maven and install it on <b>Windows</b>.</li>
<li><a href="http://dstas.blogspot.com/2013/04/maven-toweblogic-part2.html">Part 2:<b> Weblogic</b>. Provide the general idea of Weblogic and install it on <b>Windows</b>.</a></li>
<li><a href="http://dstas.blogspot.com/2013/04/maven-toweblogic-part3.html">Part 3: <b>Sample Maven Applications</b>. We will create three sample maven applications. One with Netbeans and one without any IDE.</a></li>
<li><a href="http://dstas.blogspot.com/2013/04/maven-toweblogic-part4.html">Part 4: <b>Configuration and Deployment.</b> We will configure everything and we will deploy the applications to Weblogic</a>.</li>
</ul>
<br />
<i><b>There are no assumptions here and we are going to do everything from scratch.</b></i><br />
<br />
There is always a person out there that will have to use those technologies together without knowing any of them.<br />
<br />
<b>Maven </b><br />
What is Maven? Well, the official documentation says the following:<br />
<b> </b><br />
<blockquote class="tr_bq">
Maven, a <a class="externalLink" href="http://en.wikipedia.org/wiki/Maven">Yiddish word</a> meaning <i>accumulator of knowledge</i>,
was originally started as an attempt to simplify the build processes in
the Jakarta Turbine project. There were several projects each with
their own Ant build files that were all slightly different and JARs were
checked into CVS. We wanted a standard way to build the projects, a
clear definition of what the project consisted of, an easy way to
publish project information and a way to share JARs across several
projects.<br />
The result is a tool that can now be used for building
and managing any Java-based project. We hope that we have created
something that will make the day-to-day work of Java developers easier
and generally help with the comprehension of any Java-based project. </blockquote>
<b> </b><br />
<a href="http://maven.apache.org/what-is-maven.html">http://maven.apache.org/what-is-maven.html</a><br />
<br />
In other words and this is how it helps me remember it, maven is a repository that holds the dependencies your project needs. Not only that, but you can include your projects in the repository and you can reuse them as dependencies to other projects.<br />
<br />
The above is not perfect and certainly does not cover everything, but it provides the general idea.<br />
<br />
<b>So, whats with the repositories?</b> Well, a repository is a place where all your <b>dependencies </b>are stored. According to the official documentation (content extracted from<a href="http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html"> http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html</a>):<br />
<blockquote class="tr_bq">
Dependency management is one of the features of Maven that is best known
to users and is one of the areas where Maven excels. There is not much
difficulty in managing dependencies for a single a project, but when you
start getting into dealing with multi-module projects and applications
that consist of tens or hundreds of modules this is where Maven can help
you a great deal in maintaining a high degree of control and stability.</blockquote>
<br />
For example:<br />
Lets say that you want a new house.. right? So you want a <b>new house. </b>The new house is your project.<br />
<b>But,</b> a new house has more needs to be implemented, some of them are the following:<br />
<b>money, builders, mortgages, partner's approval and so on..</b><br />
Each of those needs is called a dependency and <b>each dependency has more needs (dependencies)</b> <b> </b><br />
With Maven, most of those dependencies are resolved automagicaly through the repositories! (except the partner of course... :) )<br />
<br />
In a more complex example where we would have to have 15 different houses. <b>Your project now is to build 15 different houses</b>. Maven would take care of the dependencies! Lets say we want a villa, a flat, a house and a two bed appartment and so on (use your imagination). As you can imagine, each house depends on different things.. This is where Maven comes to play.. It knows about those dependencies for every type of house and resolves them automatically. Additionally, we can provide more dependencies for each house depending on our taste! Maven will determine the dependencies of the new dependency and everything will be great and we will live happily ever after!<br />
Well, there are cases where Maven cannot resolve all the dependencies and we will have to do it on our own.. but even in this case, things are quite simple.<br />
<br />
I wish my life was that simple! xD<br />
<br />
<blockquote class="tr_bq">
<i><u><b>Again, this is not the definitive guide for Maven and it is not going to be. This article will give the general idea of Maven by describing some of it's key features in order to help complete our task which is to deploy a sample application to WebLogic, using Maven.</b></u></i></blockquote>
<br />
<u>Maven needs </u><b><u>JAVA</u>. </b>Since Maven is built for java applications you need to have java in order to install and run Maven.<br />
<br />
<br />
<u>Maven creates <b>Maven Projects</b></u>.<b> </b>Yes, that is true.. with Maven you create a Maven project that has specific structure and is ready to be configured. So you can create a Maven project for a java application or for java web application or for java enterprise application etc and you are ready to start developing.<br />
How do you do that and why should you do that? The how is easy, by executing specific goals! (comming up, look below). Maven uses plugins and goals that really help in creating project structures based on conventions. So you dont have to worry much about<br />
<br />
<br />
<u>Maven has </u><b><u>goals</u>. Maven </b>works with goals. Each goal or a set of goals can serve a specific purpose. Imagine goals as a part of a bigger process. We can have standalone goals and we can have goals that depend on other goals. For example, a goal called <i><u>test </u></i>of the <b>SureFile plugin</b>(comming up, look below) can be used to run unit tests. The <i><u>create </u></i>goal of the <b>archetype plugin </b>can be used to create a maven project. <br />
<br />
<br />
<u>Maven has </u><b><u>plugins</u>. Anyone can create maven plugins.</b> A plugin is a set of goals (look above) that serve a specific purpose. For example, the following link describes the SureFire plugin<br />
<a href="http://maven.apache.org/surefire/maven-surefire-plugin/">http://maven.apache.org/surefire/maven-surefire-plugin/</a><br />
As you will see in the link, SureFire has only one goal called <i><u>test</u></i> . <br />
This is how SureFile plugin is designed. It has only one goal. So, we can call that goal of that plugin and it will do it's job. Of course plugins can and quite often do, accept configuration parameters. Those parameters determine the execution process of the plugin's goals. We wont dive into the details of configuration parameters since it is out of scope of this article. It is enough to know that plugin goals accept configuration parameters that can determine their execution process.<br />
<br />
<br />
<u>Maven has <b>phases</b></u>. Maven has a list of phases. That list is called <b>build lifecycle</b>. From the official documentation (content extracted from<a href="http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html"> http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html</a>), we can see the <b>default lifecycle phases</b>:<br />
<br />
<ul>
<li><tt>validate</tt> - validate the project is correct and all necessary information is available</li>
<li><tt>compile</tt> - compile the source code of the project</li>
<li><tt>test</tt>
- test the compiled source code using a suitable unit testing
framework. These tests should not require the code be packaged or
deployed</li>
<li><tt>package</tt> - take the compiled code and package it in its distributable format, such as a JAR.</li>
<li><tt>integration-test</tt> - process and deploy the package if necessary into an environment where integration tests can be run</li>
<li><tt>verify</tt> - run any checks to verify the package is valid and meets quality criteria</li>
<li><tt>install</tt> - install the package into the local repository, for use as a dependency in other projects locally</li>
<li><tt>deploy</tt>
- done in an integration or release environment, copies the final
package to the remote repository for sharing with other developers and
projects.</li>
</ul>
a more detailed information on the lifecycle phases can be found here:<br />
<a href="http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Lifecycle_Reference">http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Lifecycle_Reference</a><br />
<br />
Why do we need to know about those lifecycle phases? Simply because those phases will help us understand how to use Maven when we will deploy our project to weblogic.<br />
<br />
The basic thing to remember here is that we can call any phase we want knowing that all previous phases will be executed prior the one we want. So for instance, if we call <i><u>compile </u></i>phase, we know that <i><u>validate</u></i> phase will be called prior <i><u>compile </u></i>phase.<br />
<br />
<br />
<u><b>Installing Maven</b> on <b>Windows</b></u><br />
Before installing Maven, make sure that you have installed JAVA (JDK to be exact since JRE will not be enough).<br />
<a href="http://www.oracle.com/technetwork/java/index.html">http://www.oracle.com/technetwork/java/index.html </a><br />
<br />
To install Maven is fairly easy.. Download it from here: <a href="http://maven.apache.org/download.cgi">http://maven.apache.org/download.cgi</a><br />
On the same page, it describes how to install it on windows. The below content is extracted from the official url:<br />
<ol style="list-style-type: decimal;">
<li>Unzip the distribution archive, i.e. <i>apache-maven-3.0.5-bin.zip</i> to the directory you wish to install Maven 3.0.5.
These instructions assume you chose <i>C:\Program Files\Apache Software Foundation</i>.
The subdirectory <tt>apache-maven-3.0.5</tt> will be created from the archive.
</li>
<li>Add the <tt>M2_HOME</tt> environment variable by opening up the system properties (WinKey + Pause),
selecting the "Advanced" tab, and the "Environment Variables" button, then adding the <i>M2_HOME</i>
variable in the user variables with the value
<tt>C:\Program Files\Apache Software Foundation\apache-maven-3.0.5</tt>. Be sure to omit any quotation marks around the path
even if it contains spaces. <b>Note</b>: For Maven 2.0.9, also be sure that the <tt>M2_HOME</tt>
doesn't have a '\' as last character.
</li>
<li>In the same dialog, add the <tt>M2</tt> environment variable in the user variables with the value <tt>%M2_HOME%\bin</tt>.</li>
<li><b>Optional</b>: In the same dialog, add the <tt>MAVEN_OPTS</tt> environment variable in the user variables to specify JVM properties, e.g. the value
<tt>-Xms256m -Xmx512m</tt>. This environment variable can be used to supply extra options to Maven.</li>
<li>In the same dialog, update/create the <tt>Path</tt> environment variable in the user variables and prepend the value <tt>%M2%</tt> to add
Maven available in the command line.</li>
<li>In the same dialog, make sure that <tt>JAVA_HOME</tt> exists in your user variables or in the system variables and it is set to the location of your JDK,
e.g. <tt>C:\Program Files\Java\jdk1.5.0_02</tt> and that <tt>%JAVA_HOME%\bin</tt> is in your <tt>Path</tt> environment variable.</li>
<li>Open a <i>new</i> command prompt (Winkey + R then type <tt>cmd</tt>) and run <tt>mvn --version</tt> to verify that it is correctly installed.</li>
</ol>
In a nutshell, after installing Maven, we have to setup some user environment variables to have it working on our Windows machine.<br />
The most important part is t number 5:<br />
<br />
<blockquote class="tr_bq">
<b>In the same dialog, update/create the <tt>Path</tt> environment variable in the user variables and <u>prepend </u>the value <tt>%M2%</tt> to add
Maven available in the command line. </b></blockquote>
<br />
And there you go! you have an <i>accumulator of knowledge</i> on your Windows machine!<br />
If you want to learn more about maven and discover it's power, I strongly recomend the official documentation of maven along with the great books out there.<br />
By now, we have a very basic understanding of what is Maven and it can do for us. We havent created any maven project yet simply because we are going to to do in <b>Part 3 </b>of this series. Why not now? Because I want you to try it on your own and see how is it is! If you are so eager to see how it is done, <b><a href="http://dstas.blogspot.com/2013/04/maven-toweblogic-part3.html">jump to part 3 here</a></b><br />
<br />
The Next Part (<b>part 2</b>) of this series is<b> <a href="http://dstas.blogspot.com/2013/04/maven-toweblogic-part2.html">about Weblogic . </a></b><link here=""></link><br />
<br />
References:<br />
<a href="http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html">http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html </a><br />
<a href="http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html">http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html</a><br />
<a href="http://maven.apache.org/archetype/maven-archetype-plugin/">http://maven.apache.org/archetype/maven-archetype-plugin/</a> <br />
<a href="http://shop.oreilly.com/product/9780596517335.do">http://shop.oreilly.com/product/9780596517335.do</a><br />
<a href="http://maven.apache.org/plugins/index.html">http://maven.apache.org/plugins/index.html</a><br />
<a href="http://code.google.com/hosting/search?q=maven+plugin+label%3Amaven&projectsearch=Search+Projects">http://code.google.com/hosting/search?q=maven+plugin+label%3Amaven&projectsearch=Search+Projects </a><br />
<a href="http://maven.apache.org/guides/mini/guide-configuring-plugins.html">http://maven.apache.org/guides/mini/guide-configuring-plugins.html </a><br />
<a href="http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html">http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html</a><br />
<br />
<br /></div>
Anonymoushttp://www.blogger.com/profile/03186199307026201300noreply@blogger.com0tag:blogger.com,1999:blog-294172151396534006.post-38837776460660997692013-03-10T05:24:00.001-07:002013-03-10T05:24:51.939-07:00Oracle CRM On Demand Administration Essentials Review<div dir="ltr" style="text-align: left;" trbidi="on">
Hello,<br />
<br />
Packt Publishing very kindly asked me to review their new book:<br />
<br />
<br />
<blockquote style="font-family: Helvetica; text-align: -webkit-auto;" type="cite">
<br /></blockquote>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.packtpub.com/sites/default/files/5009EN_Oracle%20CRM%20On%20demand%2018%20Administration%20Essentials.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="http://www.packtpub.com/sites/default/files/5009EN_Oracle%20CRM%20On%20demand%2018%20Administration%20Essentials.jpg" width="259" /></a></div>
<b style="font-family: Calibri; text-align: -webkit-auto;"><a class="moz-txt-link-freetext" href="http://bit.ly/133kwRP">http://bit.ly/133kwRP</a></b><span style="font-family: Calibri; text-align: -webkit-auto;"> </span><br />
<br />
<br />
<b>Oracle CRM On Demand Administration Essentials</b> is a great book in administering Oracle CRM On Demand. The authors did a great job explaining, in a very simple way, the various steps of many administration and configuration processes. The book provides clear examples in each chapter and elaborates on the theory before describing the technical steps. This is very helpful for newcomers in the CRM world since they gain knowledge on the needs of an organisation which helps them to better understand how to administer and configure CRM On Demand by reading the technical guides of the book. Being new to CRM On Demand, with this book I was able to understand the bigger picture, how it helps an Organisation and how I will be able to configure, customise and administer CRMOD in order to meet the needs of that Organisation. I will definitely use this book on my every day tasks around CRMOD. I highly recommend it.<br />
<div>
<br /></div>
<br />
<br />
<br />
Regards<br />
</div>
Anonymoushttp://www.blogger.com/profile/03186199307026201300noreply@blogger.com1tag:blogger.com,1999:blog-294172151396534006.post-5064370492781139782013-02-01T01:45:00.003-08:002013-02-01T01:45:49.337-08:00ADF Lounge Google Plus Hang Out. Is GIT ready for the Enterprise, is the Enterprise ready for GIT<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
Hello all,<br />
<br />
The latest ADF Lounge Hang Out is finished!<br />
This session had the form of a discussion panel and it was live!! of course you can find the recorded part on youtube (check the link below). <br />
We talked about GIT and the Enterprise. It was a great experience and am really looking forward to see more hang outs in the ADF Lounge!<br />
<br />
<br />
It is always fun to discuss your favorite topics with people around the world!<br />
I would like to thank Chris Muir for facilitating this session and all the participants in the panel for this hang out.<br />
Enjoy:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/pjno6-2JsO4?feature=player_embedded' frameborder='0'></iframe></div>
<br />
<br />
Regards.</div>
Anonymoushttp://www.blogger.com/profile/03186199307026201300noreply@blogger.com0tag:blogger.com,1999:blog-294172151396534006.post-8769297786583891442012-12-16T16:08:00.001-08:002012-12-16T16:08:39.953-08:00Winners of the Competition! Win A free copy of the 'Oracle ADF Real World Developer’s Guide'. Here are the winners<div dir="ltr" style="text-align: left;" trbidi="on">
Hello all<br />
<br />
<br />
The competition is over!<br />
<br />
You can find the description of the competition here:<br />
<a href="http://dstas.blogspot.co.uk/2012/11/win-free-copy-of-oracle-adf-real-world.html">http://dstas.blogspot.co.uk/2012/11/win-free-copy-of-oracle-adf-real-world.html</a><br />
<br />
I would like to thank you all for your excellent and inspiring comments!<br />
<br />
As you know, only two winners will be able to get a free copy of the book.<br />
<br />
The choice was <b>very very difficult</b> and all comments clearly indicated the success of Jobinesh's book!<br />
<br />
<br />
Without any further delay, here are the names of the two winners:<br />
<br />
<ul class="MailOutline" style="font-family: Helvetica; text-align: -webkit-auto;">
<li><b>Thirumalaisamy Thangavel </b></li>
<li><b>Jack ren </b> </li>
</ul>
<br />
<br />
<br />
<span style="text-align: -webkit-auto;">Congratulations guys! you will soon receive a free copy of </span><b style="background-color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px;"><span style="color: #4f4f4f; font-family: Calibri;"> </span><a href="http://www.packtpub.com/oracle-application-development-framework-real-world-developers-guide/book" style="color: #0054a6; text-decoration: none;"><span style="font-family: Calibri;">Oracle ADF Real World Developer’s Guide</span></a><span style="font-family: Calibri;"><a href="http://www.packtpub.com/bmc-control-m-7/book" style="color: #0054a6; text-decoration: none;"> </a><span style="color: #4f4f4f;">book!</span></span></b><br />
<b style="background-color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px;"><span style="font-family: Calibri;"><span style="color: #4f4f4f;"><br /></span></span></b>
One thing that is clear from this competition, is the fact that Oracle ADF is the framework of choice for more and more projects around the world!<br />
<br />
The already big ADF community is increasing really fast and that is really great news!<br />
I am looking forward to seeing more and more blogs about ADF and Fusion Middleware!<br />
<div style="text-align: left;">
<span style="text-align: -webkit-auto;">It is always great, motivational and inspiring to contribute and share knowledge!</span><span style="font-family: Helvetica; text-align: -webkit-auto;"> </span></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: -webkit-auto;">
<span style="font-family: Helvetica;">Regards</span></div>
</div>
Anonymoushttp://www.blogger.com/profile/03186199307026201300noreply@blogger.com2tag:blogger.com,1999:blog-294172151396534006.post-43545218321587205882012-11-30T07:43:00.000-08:002012-12-16T16:10:15.790-08:00Win A free copy of the 'Oracle ADF Real World Developer’s Guide', just by commenting!<div dir="ltr" style="text-align: left;" trbidi="on">
<!--[if !mso]>
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
<![endif]--><!--[if gte mso 9]><xml>
<o:DocumentProperties>
<o:Revision>0</o:Revision>
<o:TotalTime>0</o:TotalTime>
<o:Pages>1</o:Pages>
<o:Words>290</o:Words>
<o:Characters>1656</o:Characters>
<o:Company>Free Lancer</o:Company>
<o:Lines>13</o:Lines>
<o:Paragraphs>3</o:Paragraphs>
<o:CharactersWithSpaces>1943</o:CharactersWithSpaces>
<o:Version>14.0</o:Version>
</o:DocumentProperties>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
</o:OfficeDocumentSettings>
</xml><![endif]-->
<!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>JA</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
<w:DontFlipMirrorIndents/>
<w:OverrideTableStyleHps/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="276">
<w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" Priority="39" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" Name="toc 9"/>
<w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" Priority="0" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" Priority="0" Name="Hyperlink"/>
<w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
</w:LatentStyles>
</xml><![endif]-->
<!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Times New Roman";}
</style>
<![endif]--><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1027"/>
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1"/>
</o:shapelayout></xml><![endif]-->
<!--StartFragment-->
<br />
<div class="MsoNormal">
<b><span style="font-family: Calibri;">Win A free copy of the
'Oracle ADF Real World Developer’s Guide</span></b><b><span style="font-family: Calibri; font-size: 11.0pt;">'</span></b><b><span style="font-family: Calibri;">,
just by commenting!<o:p></o:p></span></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="font-family: Calibri;">Hello all,</span></div>
<div class="MsoNormal">
<br />
-----------------------------<br />
UPDATE: the competition is over and the winners are announced here:<br />
<br />
<a href="http://dstas.blogspot.co.uk/2012/12/winners-of-competition-win-free-copy-of.html">http://dstas.blogspot.co.uk/2012/12/winners-of-competition-win-free-copy-of.html</a><br />
<br />
Thank You all for your participation.<br />
-------------------------------------------------<br />
<br />
<br /></div>
<div class="MsoNormal">
<span style="font-family: Calibri;">Packt publishing, kindly asked me to </span><span style="background-color: white; font-family: Calibri; text-align: -webkit-auto;">conduct a giveaway contest for the book!</span></div>
<div class="MsoNormal">
<span style="background-color: white; font-family: Calibri; text-align: -webkit-auto;"><br /></span>
<span style="background-color: white; font-family: Calibri; text-align: -webkit-auto;">Just to remind you that I was one of the Technical Reviewers of that book.</span><br />
<span style="background-color: white; font-family: Calibri; text-align: -webkit-auto;"><a href="http://dstas.blogspot.co.uk/2012/10/oracle-adf-real-world-developers-guide.html">you can find the link here</a></span></div>
<div class="MsoNormal">
<span style="background-color: white; font-family: Calibri; text-align: -webkit-auto;">So, it is with great pleasure to conduct the following giveaway contest!</span></div>
<div class="MsoNormal">
<span style="background-color: white; font-family: Calibri; text-align: -webkit-auto;"><br /></span></div>
<div class="MsoNormal">
<span style="font-family: Calibri;"><br /></span></div>
<div class="MsoNormal">
<b><span style="font-family: Calibri;">For the contest Packt Publishing has two copies of </span><a href="http://www.packtpub.com/oracle-application-development-framework-real-world-developers-guide/book"><span style="font-family: Calibri;">Oracle ADF Real World Developer’s Guide</span></a><a href="http://www.packtpub.com/bmc-control-m-7/book"><span style="font-family: Calibri;"> </span></a></b><span style="font-family: Calibri;"><b>to be given away to two
lucky winners.</b><o:p></o:p></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b><span style="font-family: Calibri;"><u>How you can win:</u><o:p></o:p></span></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="font-family: Calibri;">To win your copy of this
book, all you need to do is come up with a comment below highlighting the
reason "<b>why you would like to win this book</b>”.<o:p></o:p></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b><span style="font-family: Calibri;">Please note: </span></b><span style="font-family: Calibri;">Winners residing only in the USA and Europe would
get a chance to win print copies. Others would be provided with eBook copies.<o:p></o:p></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b><span style="font-family: Calibri;">Duration of the contest
and selection of winners:<o:p></o:p></span></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="font-family: Calibri;"><b>The contest is valid for
14 days, and is open to everyone.</b> </span><br />
<span style="font-family: Calibri;"><br /></span>
<br />
<h3 style="text-align: left;">
<span style="font-family: Calibri;"><b><u>The end date is</u></b> </span><u style="font-family: Calibri; font-weight: bold;">14 of December</u> <u>M<b style="font-family: Calibri;">idnight UK timezone (UTC +0)</b></u><b style="font-family: Calibri;">.</b></h3>
<span style="font-family: Calibri;"><b><br /></b></span></div>
<div class="MsoNormal">
<span style="font-family: Calibri;">Winners will be selected on the
basis of their comment posted.<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Calibri;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.packtpub.com/sites/default/files/4828EN_Oracle%20ADF%20Real%20World%20Developer%E2%80%99s%20Guidecov.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="http://www.packtpub.com/sites/default/files/4828EN_Oracle%20ADF%20Real%20World%20Developer%E2%80%99s%20Guidecov.jpg" width="259" /></a></div>
<div class="MsoNormal">
<!--[if gte vml 1]><o:wrapblock><v:shapetype id="_x0000_t75"
coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe"
filled="f" stroked="f">
<v:stroke joinstyle="miter"/>
<v:formulas>
<v:f eqn="if lineDrawn pixelLineWidth 0"/>
<v:f eqn="sum @0 1 0"/>
<v:f eqn="sum 0 0 @1"/>
<v:f eqn="prod @2 1 2"/>
<v:f eqn="prod @3 21600 pixelWidth"/>
<v:f eqn="prod @3 21600 pixelHeight"/>
<v:f eqn="sum @0 0 1"/>
<v:f eqn="prod @6 1 2"/>
<v:f eqn="prod @7 21600 pixelWidth"/>
<v:f eqn="sum @8 21600 0"/>
<v:f eqn="prod @7 21600 pixelHeight"/>
<v:f eqn="sum @10 21600 0"/>
</v:formulas>
<v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
<o:lock v:ext="edit" aspectratio="t"/>
</v:shapetype><v:shape id="_x0000_s1026" type="#_x0000_t75" style='position:absolute;
margin-left:70.05pt;margin-top:18pt;width:323.9pt;height:429.9pt;z-index:251657728;
mso-wrap-distance-left:0;mso-wrap-distance-right:0;mso-position-horizontal:absolute;
mso-position-horizontal-relative:text;mso-position-vertical:absolute;
mso-position-vertical-relative:text' filled="t">
<v:fill color2="black"/>
<v:imagedata src="file://localhost/Users/Mitsos/Library/Caches/TemporaryItems/msoclip/0clip_image001.jpg"
o:title=""/>
<v:textbox inset="0,0,0,0"/>
<w:wrap type="topAndBottom"/>
</v:shape><![endif]--><!--[if !vml]-->
<br />
<table align="left" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td height="0" width="70"></td>
</tr>
<tr>
<td></td>
<td></td>
</tr>
</tbody></table>
<!--[endif]--><!--[if gte vml 1]></o:wrapblock><![endif]--><br clear="ALL" />
<span style="font-family: Calibri;"><o:p></o:p></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="http://www.packtpub.com/oracle-application-development-framework-real-world-developers-guide/book"><span style="font-family: Calibri;">Oracle ADF Real World Developer’s Guide</span></a><a href="http://www.packtpub.com/bmc-control-m-7/book"><span style="font-family: Calibri;"> </span></a><a href="http://www.packtpub.com/bmc-control-m-7/book"><span style="font-family: Calibri;">i</span></a><span class="MsoHyperlink"><span style="color: windowtext; font-family: Calibri;">s</span></span><span style="font-family: Calibri;"> written by </span><a href="http://jobinesh.blogspot.in/"><span style="font-family: Calibri;">Jobinesh
Purushothaman, </span></a><span class="MsoHyperlink"><span style="color: windowtext; font-family: Calibri;">who <o:p></o:p></span></span></div>
<div class="MsoNormal">
<span class="MsoHyperlink"><span style="color: windowtext; font-family: Calibri;">works with Oracle as
a Principal Solutions Architect for the Oracle Application Development
Framework.<o:p></o:p></span></span></div>
<div class="MsoNormal" style="line-height: 150%;">
<span class="MsoHyperlink"><span style="font-family: Calibri;">
<o:p></o:p></span></span></div>
<div class="MsoNormal" style="line-height: 150%;">
<span style="font-family: Calibri; mso-bidi-font-family: Calibri;">This book is suitable for ADF developers who are
looking forward to build healthy and better performing applications using
Oracle ADF. A book filled with step-by-step instructions and real-time examples
with illustrations, diagrams, and tips that help developers learn the visual
and declarative programming model offered by ADF.<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 150%;">
<br /></div>
<div class="MsoNormal" style="line-height: 150%;">
<span style="font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman";">Using
this book, readers will learn to get started with building business services
using ADF business components, validate business data in different layers of an
application and understand the use of EJB and web services in an ADF
application.<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: 150%;">
<span style="font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman";"><br /></span></div>
<div class="MsoNormal" style="line-height: 150%;">
<span style="font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman";"><b><u>Make your best comment!!!</u></b></span></div>
<div class="MsoNormal" style="line-height: 150%;">
<span style="font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman";">Regards!</span></div>
<div class="MsoNormal" style="line-height: 150%;">
<span style="font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman";"><br /></span></div>
<!--EndFragment--></div>
Anonymoushttp://www.blogger.com/profile/03186199307026201300noreply@blogger.com36tag:blogger.com,1999:blog-294172151396534006.post-80302511119787436572012-11-19T07:23:00.000-08:002012-11-19T07:23:33.990-08:00create a new row when there are no Records in View Object. ADF BC<div dir="ltr" style="text-align: left;" trbidi="on">
Hi,<br />
<br />
This is a quick post to show a way of creating a new row when there no records retrieved from a query in a view object.<br />
<br />
in other words,<br />
we want to create a record every time the view object does not return any data..<br />
<br />
<b>you can download the example from the following repository:</b><br />
<strong class="final-path" style="background-color: white; border: 0px; font-family: Helvetica, arial, freesans, clean, sans-serif; font-size: 18px; line-height: 25px; margin: 0px; padding: 0px;">InsertRowWhenNoRecordExist</strong><br />
<a href="https://github.com/mox8iro/ADF-SamplesR2.git">https://github.com/mox8iro/ADF-SamplesR2.git</a><br />
<br />
In this example, we are going to have a master detail association between Countries and Locations.<br />
This is from the HR schema.<br />
<br />
So, in this case, we want to navigate through Countries and see the locations of every country.<br />
In case there is no location for a country, we want to create a record and have it ready for data entry.<br />
<br />
This solution is quite simple.<br />
<br />
all we have to do is override the executeQueryForCollection method in the Locations View Object.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-MQ_ODfBv_rRmGHwdhV_u-fiUlq135oXf-tdOVF8Gil75TpQXb6T19p5PJE7a4AxbJ82hD6VFm6W4qxHyUZ1TalUPw95Dp7na6LGgWy0xDnjXWnMrPLtk3cQ_KBzMs8sbIRvjG2errzM/s1600/theCode.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="195" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-MQ_ODfBv_rRmGHwdhV_u-fiUlq135oXf-tdOVF8Gil75TpQXb6T19p5PJE7a4AxbJ82hD6VFm6W4qxHyUZ1TalUPw95Dp7na6LGgWy0xDnjXWnMrPLtk3cQ_KBzMs8sbIRvjG2errzM/s320/theCode.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="text-align: left;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="text-align: left;">As you can see, we check if there is not any row in the view object, right after the queryExecution.</span></div>
<div class="separator" style="clear: both; text-align: left;">
we choose to check if the first() method returns null. Of course there are other ways to achieve the same thing. It really depends on the case.</div>
<br />
if the vo has no rows, we create a new row, insert it and make it current.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijP7hNeEH8DjcUe0MeODs7P73T4WfU-uf5pecp7rcG7MjuchQbXf0RUQT4ABdZGGIKT34hxcsPpOPMQnBY8JQ6esE1KIvQ58Hyh48tYfO9oaT1ScHsKHSgK2M9JB_15XINEco-K-mLSOk/s1600/rowCreated.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="140" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijP7hNeEH8DjcUe0MeODs7P73T4WfU-uf5pecp7rcG7MjuchQbXf0RUQT4ABdZGGIKT34hxcsPpOPMQnBY8JQ6esE1KIvQ58Hyh48tYfO9oaT1ScHsKHSgK2M9JB_15XINEco-K-mLSOk/s320/rowCreated.png" width="320" /></a></div>
<br />
<br />
And thats it. as simple as it gets.<br />
<br />
<b>you can download the example from the following repository:</b><br />
<b><br /></b>
<br />
<strong class="final-path" style="background-color: white; border: 0px; font-family: Helvetica, arial, freesans, clean, sans-serif; font-size: 18px; line-height: 25px; margin: 0px; padding: 0px;">InsertRowWhenNoRecordExist</strong><br />
<a href="https://github.com/mox8iro/ADF-SamplesR2.git">https://github.com/mox8iro/ADF-SamplesR2.git</a><br />
<br />
Regards,<br />
<br />
<br /></div>
Anonymoushttp://www.blogger.com/profile/03186199307026201300noreply@blogger.com0tag:blogger.com,1999:blog-294172151396534006.post-83096019553207598262012-11-18T04:51:00.001-08:002012-11-18T04:51:57.412-08:00Oracle ADF Mobile: adfmf-application.xml and adfmf-feature.xml Part 2 (final)<div dir="ltr" style="text-align: left;" trbidi="on">
Hi,<br />
<br />
This is the second and final part of this topic. We will try to answer some more questions regarding those file descriptors. This is going to be a brief post since a detailed explanation was made in the part1.<br />
<br />
adfmf-application.xml<br />
<br />
adfmf-feature.xml<br />
<br />
<b>You can download the sample application from the following GitHub Repository:</b><br />
<b><br /></b>
<strong class="final-path" style="background-color: white; border: 0px; font-family: Helvetica, arial, freesans, clean, sans-serif; font-size: 18px; line-height: 25px; margin: 0px; padding: 0px; text-align: -webkit-auto;">MobileFileDescriptorsExPArt2</strong><br />
<a href="https://github.com/mox8iro/ADF-Mobile-Samples">https://github.com/mox8iro/ADF-Mobile-Samples</a><br />
<b><br /></b><a href="http://dstas.blogspot.co.uk/2012/11/oracle-adf-mobile-adfmf-applicationxml.html">You can find part 1 here.</a><br />
<br />
Okay lets clear out some additional stuff in order to be ready to go to more advanced stuff.<br />
<br />
<b>-Can we have pages that are not included in the adfmf-feature.xml ? Something like references?</b><br />
<br />
We can indeed! Features are the pages that will be viewed in the springBoard(if enabled) and the navigationBar. So in simple words, your features are the content that you will be able to navigate to from your springboard and your navigationBar. Something like a reference point..<br />
<br />
<b>-Can we have more than one pages in one adfmf-feature.xml ?</b><br />
Yes of course we can. Each page (html, AMX, remote url) in the adfmf-feature.xml file represents a feature. That feature can be controlled from the adfmf-application.xml regarding visibility and device access.<br />
<br />
<b>-When are we going to talk about AMX pages??</b><br />
In the next ADF Mobile post. These posts were more to get acquainted with those files. Since we now know what we are talking about. We will continue to more interesting stuff. One thing at a time.<br />
<br />
<br />
There are still features not mentioned in these posts, but I think it would be better if we saw them on a request basis, when there will be a need.<br />
<br />
The example application in the repository, covers all those questions mentioned.<br />
<b><br /></b>
<b>You can download the sample application from the following GitHub Repository:</b><br />
<b><br /></b>
<br />
<strong class="final-path" style="background-color: white; border: 0px; font-family: Helvetica, arial, freesans, clean, sans-serif; font-size: 18px; line-height: 25px; margin: 0px; padding: 0px; text-align: -webkit-auto;">MobileFileDescriptorsExPArt2</strong><br />
<a href="https://github.com/mox8iro/ADF-Mobile-Samples">https://github.com/mox8iro/ADF-Mobile-Samples</a><br />
<br />
Regards,<br />
</div>
Anonymoushttp://www.blogger.com/profile/03186199307026201300noreply@blogger.com0tag:blogger.com,1999:blog-294172151396534006.post-41200158894390130722012-11-16T12:34:00.003-08:002012-11-16T12:34:34.711-08:00CSV files with ADF CSVParser Example.<div dir="ltr" style="text-align: left;" trbidi="on">
Hi all,<br />
<br />
This is a small example on how to use a CSVParser which comes along with ADF.<br />
<br />
<b><a href="http://docs.oracle.com/cd/E14571_01/apirefs.1111/e10653/oracle/adf/model/adapter/dataformat/csv/CSVParser.html">oracle.adf.model.adapter.dataformat.csv.CSVParser;</a></b><br />
<b><br /></b>
<b><br /></b>
We are going to create a small example using a csv file.<br />
<br />
The project can be found in the following repository:<br />
<b>ADFCSVParserExample</b><br />
<a href="https://github.com/mox8iro/ADF-SamplesR2">https://github.com/mox8iro/ADF-SamplesR2</a><br />
<br />
<br />
We are going to use a simple csv file and we are going to upload it, parse it and create rows in the corresponding view object.<br />
<br />
with the use of CSVParser, things are a bit more easy. Just follow the screens below and you will understand why.<br />
First, we have to create a project.. We will work on a simple project based on HR Schema.<br />
We will the af:inputFile component for this example. In the value Change Listener we write the following:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUQTODtGt83LRAX6mwltUxhlSAskbeokG4rXADNQJcS_RfjyPy6fUZktub8AqBh2yKMtVsEJdUD9HsxCw-_O3SladRUtWvIJ1_armjyd4x70EBQx4ACSpU0-iumz0PD6VcWY5PXXDGYtE/s1600/uploadValueChangeListener.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="207" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUQTODtGt83LRAX6mwltUxhlSAskbeokG4rXADNQJcS_RfjyPy6fUZktub8AqBh2yKMtVsEJdUD9HsxCw-_O3SladRUtWvIJ1_armjyd4x70EBQx4ACSpU0-iumz0PD6VcWY5PXXDGYtE/s320/uploadValueChangeListener.png" 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="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaWsMf3fy65CvaBVvBg3vaZNGvgl6MxY_agse115hJ-3gegrnzQkvZOijzEVcKOqStCjp1OORstAXCPsSIepsYN1loYT_cB8jf4iMvfw0lIAptSqcL0QOtnMi1V3bJmZf_fUzF2Ron8-0/s1600/parseInBackingBean.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="74" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaWsMf3fy65CvaBVvBg3vaZNGvgl6MxY_agse115hJ-3gegrnzQkvZOijzEVcKOqStCjp1OORstAXCPsSIepsYN1loYT_cB8jf4iMvfw0lIAptSqcL0QOtnMi1V3bJmZf_fUzF2Ron8-0/s320/parseInBackingBean.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
as you can see above, the parse calls the createRow method through the bindings. <b>it is not the default adf operation. </b> it is a custom method:</div>
<div class="separator" style="clear: both; text-align: center;">
<br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRDnrQ0ejKCf5q4HCXFXvfZZ9Rwhd5Q11wd1Rpy3tTXTJ4tpyTNWn2ik6oSVXBlXJj1h5cfXEF8nttLSSIpmr-fPwfaqImSptKDc1GCPvJmFQpurbpE1ygewm6mPMYtsAzbgfI52smOnQ/s1600/AMMethod.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRDnrQ0ejKCf5q4HCXFXvfZZ9Rwhd5Q11wd1Rpy3tTXTJ4tpyTNWn2ik6oSVXBlXJj1h5cfXEF8nttLSSIpmr-fPwfaqImSptKDc1GCPvJmFQpurbpE1ygewm6mPMYtsAzbgfI52smOnQ/s320/AMMethod.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
and then we expose it to the client interface.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiD6DbJ9s54A2QuMQtSaEB6k7T8pAoldxaNtCyosNgsIBVotdR6wJM4U5Oe4U6E6yiBUSVGfPvrg-2BvVOXgNx-D1N7GR-1tAoFIAfzFnKv9fFHRSUburyUP_gt794wf5_Z_GEbrXsElvc/s1600/AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="72" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiD6DbJ9s54A2QuMQtSaEB6k7T8pAoldxaNtCyosNgsIBVotdR6wJM4U5Oe4U6E6yiBUSVGfPvrg-2BvVOXgNx-D1N7GR-1tAoFIAfzFnKv9fFHRSUburyUP_gt794wf5_Z_GEbrXsElvc/s320/AM.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
add it in the bindings as a method action.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQZZ-g8GEcNfHUVlWDTA1spwsJgBEH2jqrYJSkO0mi7DhO9mahDIrhNJHzeNsbcdNYD7iC2syLNUiShnm2pxShTlf-7V2yJlWF0sNEdw7cg7isv1i22xXhJ41HRticq_pxx9iOSlUzTbc/s1600/pageDef.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="127" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQZZ-g8GEcNfHUVlWDTA1spwsJgBEH2jqrYJSkO0mi7DhO9mahDIrhNJHzeNsbcdNYD7iC2syLNUiShnm2pxShTlf-7V2yJlWF0sNEdw7cg7isv1i22xXhJ41HRticq_pxx9iOSlUzTbc/s320/pageDef.png" width="320" /></a></div>
<br />
<br />
place the appropriate partial Triggers from and have the inputfile autoSubmit true and here it is!<br />
in the below screen shot<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhC1Er-mMT4Lqrna8LADShBNfPcumvXRvXi5wVB5aiG-Qhzvxc1jkQeYW1bIMBMF7uX-QroNtkt0uXrax88bvvgRKj_efDiryGDVgC_6QVDJ0nRZ4TtJ7EUPp_2obWRkoytmcauIrHVrI/s1600/alreadyImported2Rows.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="98" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhC1Er-mMT4Lqrna8LADShBNfPcumvXRvXi5wVB5aiG-Qhzvxc1jkQeYW1bIMBMF7uX-QroNtkt0uXrax88bvvgRKj_efDiryGDVgC_6QVDJ0nRZ4TtJ7EUPp_2obWRkoytmcauIrHVrI/s320/alreadyImported2Rows.png" width="320" /></a></div>
<br />
<br />
<br />Aaaand that is it! Simple isnt?<br />
<br />
The project can be found in the following repository:<br />
<b>ADFCSVParserExample</b><br />
<a href="https://github.com/mox8iro/ADF-SamplesR2">https://github.com/mox8iro/ADF-SamplesR2</a><br />
<br />
References:<br />
<a href="http://technology.amis.nl/2007/07/15/uploading-csv-files-into-dynamic-adf-faces-tables-programmtically-creating-columns/">http://technology.amis.nl/2007/07/15/uploading-csv-files-into-dynamic-adf-faces-tables-programmtically-creating-columns/</a><br />
<br />
<a href="http://technology.amis.nl/2010/09/16/adf-11g-import-from-excel-into-an-adf-table/">http://technology.amis.nl/2010/09/16/adf-11g-import-from-excel-into-an-adf-table/</a><br />
<br />
<br />
Regards.</div>
Anonymoushttp://www.blogger.com/profile/03186199307026201300noreply@blogger.com0tag:blogger.com,1999:blog-294172151396534006.post-43608904239296288442012-11-10T16:29:00.001-08:002012-11-10T16:29:30.977-08:00The code will go to GitHub<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
Hi,<br />
This is to let you know that gradually, the existing code and sample applications will be available on GitHub and more specifically on the following repository.<br />
All previous uploaded applications will remain on google code.<br />
<br />
<a href="https://github.com/mox8iro/">https://github.com/mox8iro/</a><br />
<br />
You will find several clients out there to get the code.<br />
<br />
My client of choice is <a href="http://www.atlassian.com/software/sourcetree/overview">SourceTree.</a><br />
<br />
Regards.<br />
<br /></div>
Anonymoushttp://www.blogger.com/profile/03186199307026201300noreply@blogger.com0tag:blogger.com,1999:blog-294172151396534006.post-3522589512604367492012-11-10T09:23:00.002-08:002012-11-10T09:23:40.524-08:00Oracle ADF Mobile: adfmf-application.xml and adfmf-feature.xml Part 1<div dir="ltr" style="text-align: left;" trbidi="on">
Hi,<br />
<br />
In this article we will try to understand the meaning of those file descriptors.<br />
This is the first part of this article regarding those file descriptors. We are going to have a very simple approach on things..<br />
<br />
<b>adfmf-application.xml</b><br />
<br />
<b>adfmf-feature.xml</b><br />
<b><br /></b>
<b><br /></b>
-<b>When are they created</b>?<br />
<br />
Those files are created when you create a new ADF Mobile application. (see <a href="http://dstas.blogspot.co.uk/2012/11/oracle-adf-mobile-world-hello.html" target="_blank">Hello World Post</a>)<br />
Also check the following link (official Oracle Documentation ):<br />
<br />
<a href="http://docs.oracle.com/cd/E35521_01/doc.111230/e24475/getting_started.htm#autoId6">http://docs.oracle.com/cd/E35521_01/doc.111230/e24475/getting_started.htm#autoId6</a><br />
<br />
<b><br /></b>
According to the above documentation (content extracted from there):<br />
<div style="text-align: center;">
<br /></div>
<br />
<div style="text-align: center;">
<span style="background-color: white; font-family: Tahoma, sans-serif; font-size: x-small; text-align: -webkit-auto;">Creating an application results in the generation of the </span><code style="background-color: white; font-size: 12px; text-align: -webkit-auto;">adfmf-application.xml</code><span style="background-color: white; font-family: Tahoma, sans-serif; font-size: x-small; text-align: -webkit-auto;"> file, which enables you to configure the mobile application and also the </span><code style="background-color: white; font-size: 12px; text-align: -webkit-auto;">adfmf-features.xml</code><span style="background-color: white; font-family: Tahoma, sans-serif; font-size: x-small; text-align: -webkit-auto;"> file, which you use to add, remove, or edit the application features embedded within the mobile application.</span></div>
<br />
hmmm... What do we get out of it? Is it clear what file is what?<br />
<br />
We have both files generated when creating the application. Thats clear so far.<br />
<br />
<b>-Can we have more than one of those configuration files?</b><br />
<br />
According to the following section of the documentation (content extracted from the below link) :<br />
<br />
<a href="http://docs.oracle.com/cd/E35521_01/doc.111230/e24475/define_features.htm#CIHJCABB">http://docs.oracle.com/cd/E35521_01/doc.111230/e24475/define_features.htm#CIHJCABB</a><br />
<br />
<br />
<div style="text-align: center;">
<span style="background-color: white; font-family: Tahoma, sans-serif; font-size: x-small; text-align: -webkit-auto;">An ADF Mobile application can have one or more view controller-type projects, each of which describes a set of features in an </span><code style="background-color: white; font-size: 12px; text-align: -webkit-auto;">adfmf-feature.xml</code><span style="background-color: white; font-family: Tahoma, sans-serif; font-size: x-small; text-align: -webkit-auto;"> file. As described in </span><a href="http://docs.oracle.com/cd/E35521_01/doc.111230/e24475/getting_started.htm#BABFDAGB" style="background-color: white; background: inherit; color: #72007c; font-family: Tahoma, sans-serif; font-size: small; text-align: -webkit-auto;">Chapter 4, "Getting Started with ADF Mobile Application Development,"</a><span style="background-color: white; font-family: Tahoma, sans-serif; font-size: x-small; text-align: -webkit-auto;"> ADF Mobile provides you with the </span><code style="background-color: white; font-size: 12px; text-align: -webkit-auto;">adfmf-application.xml</code><span style="background-color: white; font-family: Tahoma, sans-serif; font-size: x-small; text-align: -webkit-auto;"> configuration file for the mobile application itself, and the </span><code style="background-color: white; font-size: 12px; text-align: -webkit-auto;">adfmf-feature.xml</code><span style="background-color: white; font-family: Tahoma, sans-serif; font-size: x-small; text-align: -webkit-auto;"> file, which you use to define the content of the application. While you can manually change these files, ADF Mobile provides two overview editors that enable you to build these files declaratively.</span></div>
<div style="text-align: center;">
<br /></div>
..........<br />
<br />
<br />
<div style="text-align: center;">
<span style="background-color: white; font-family: Tahoma, sans-serif; font-size: x-small; text-align: -webkit-auto;">The </span><code style="background-color: white; font-size: 12px; text-align: -webkit-auto;">adfmf-application.xml</code><span style="background-color: white; font-family: Tahoma, sans-serif; font-size: x-small; text-align: -webkit-auto;"> configuration file enables you to set the basic configuration of the ADF Mobile application by designating its display name, a unique application ID (to prevent naming collisions) and also by selecting the application features that will display on the application springboard (the equivalent of a home page on a smartphone). Further, this file enables you to create the user preferences pages for the mobile application.</span></div>
<br />
Sorry what? We can have more than one ViewController type projects?<br />
yep! <b>Which means that we can have more than one adfmf-feature.xml files.</b><br />
<br />
Lets do it then!!!!!!!!!!!!!!!!!! ( I actually typed all those !!!! one by one... Lets start a cult... the ! cult!. (exclamation mark cult.. sounds wicket.. doesnt it? )) ( I even placed the parenthesis correct!! wow imagine something like : " correct exclamation mark exclamation mark exclamation mark)<br />
<br />
Lets create an ADF Mobile application with more than one ViewController type projects!<br />
(If you dont remember how to start with and ADF Mobile application check the beginning of this article)<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8gT90RxmoA9gy9yWz_VHTvI4b-He8yb5VP1gAkfhaAHO3M2JB8FB_7U7u6NuDVB2tej5vecVOv2YZQuLrvx6ghwUi3JWJj639lNu-fGOsNPgmxVeX1jR0l0PVEy4Da8kCcvX9-Qbbxjg/s1600/createNewViewControllerProject.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="228" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8gT90RxmoA9gy9yWz_VHTvI4b-He8yb5VP1gAkfhaAHO3M2JB8FB_7U7u6NuDVB2tej5vecVOv2YZQuLrvx6ghwUi3JWJj639lNu-fGOsNPgmxVeX1jR0l0PVEy4Da8kCcvX9-Qbbxjg/s320/createNewViewControllerProject.png" width="320" /></a></div>
<br />
<br />
In this example we will have 3 ViewController projects: ViewController, ViewController2 and ViewController3<br />
The result of that creation is the following:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEix2ch8Dy0yvzfHMbFz2TomSoiSrSnXnH0J_SJgnB1ufgm4imXQKIGtkbEi1ZD8V0bPl6-bGdRSm2oMCT5cJgiFIXwJhq7iu-rynX_3XuPQaBIseq0zaQXouybhWQ6eo3Y2jR9WkFj8SOQ/s1600/manyViewControllers.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEix2ch8Dy0yvzfHMbFz2TomSoiSrSnXnH0J_SJgnB1ufgm4imXQKIGtkbEi1ZD8V0bPl6-bGdRSm2oMCT5cJgiFIXwJhq7iu-rynX_3XuPQaBIseq0zaQXouybhWQ6eo3Y2jR9WkFj8SOQ/s320/manyViewControllers.png" width="220" /></a></div>
<br />
Ok, as we can see we have tree different adfmf-feature.xml files for each ViewController.<br />
Lets create an html page in each ViewController:<br />
<br />
in this post, names are going to be dull. There is something retro in this kind of naming.<br />
The pages will be:<br />
<br />
<b>page.html</b><br />
<b>page2.html</b><br />
<b>page3.html</b><br />
<br />
The result will be the following:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKjkpKsIdW-4OFL45EtwEH-kTNFFRwVYhyxoXXZn23WUBdW17ebiaJQHq8KXroSTFPoHBf8XJBBARA8dhdGsSSW9oJbC0Ut6J26oDJmG6dxuyMt6h5dMJKQ_Mi-yhJKEucCKrW4NcyIXU/s1600/htmlPagesCreated.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKjkpKsIdW-4OFL45EtwEH-kTNFFRwVYhyxoXXZn23WUBdW17ebiaJQHq8KXroSTFPoHBf8XJBBARA8dhdGsSSW9oJbC0Ut6J26oDJmG6dxuyMt6h5dMJKQ_Mi-yhJKEucCKrW4NcyIXU/s320/htmlPagesCreated.png" width="237" /></a></div>
<br />
Each page will have an output text.. something to recognisable.<br />
<br />
What have we done so far?<br />
Nothing really.. we just created three html pages....<br />
In order to show those pages in the application. we have to add them as <b>features in the corresponding ViewController project.</b><br />
<br />
NOTE: in each addition, make sure that the ids are unique. Keep the other values as default.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi33qWEvE2n71bvhUS6sF3HwePJqR1KAbMUlgnHCrxi_ntt1yoA28bM8GHeZZ4bYQb41B_JmSxX4xdkUkWSWHFUBJ185TKbLHGyVI-Lr8tMG7qrypzGCJ06dN92aGUtitU4X5bTWIRYDNo/s1600/createADFMobileFeature.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="71" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi33qWEvE2n71bvhUS6sF3HwePJqR1KAbMUlgnHCrxi_ntt1yoA28bM8GHeZZ4bYQb41B_JmSxX4xdkUkWSWHFUBJ185TKbLHGyVI-Lr8tMG7qrypzGCJ06dN92aGUtitU4X5bTWIRYDNo/s320/createADFMobileFeature.png" width="320" /></a></div>
<br />
<br />
After all that is done, we will have the following:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFiyrMsdUgm0jSImoB3effkIpfDoiz-zW13naLgJyCHGI7EfI0Wp7z10V0_VnzI6ud4zvfDSi0h1oUpNQVjZUd6pfZfYIs__AEQ0sBxq_YvbOflA_4eWABuuX4sxJxz9KcuJei9Fr0Tlo/s1600/FeaturesCreated.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="192" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFiyrMsdUgm0jSImoB3effkIpfDoiz-zW13naLgJyCHGI7EfI0Wp7z10V0_VnzI6ud4zvfDSi0h1oUpNQVjZUd6pfZfYIs__AEQ0sBxq_YvbOflA_4eWABuuX4sxJxz9KcuJei9Fr0Tlo/s320/FeaturesCreated.png" width="320" /></a></div>
<br />
What we have here?<br />
We have created a feature for every html page in each ViewController. Each adfmf-feature.xml file is added as a feature reference in the adfmf-application.xml file.<br />
Lets have a look:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrcXEtbszBeBVzTCMw3GdsXCHZuze_HFPC9Q71YfTH4jvOpB9BeQLSMetcwmQ-3RD734T1hcNqHUOkQM8yTkcaV1waGC2-E0PNksu4NaIr0tgsmfN-u2Etsk7bY-Gs1dV8oSgVU9pUX2o/s1600/adfmfApplication.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="192" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrcXEtbszBeBVzTCMw3GdsXCHZuze_HFPC9Q71YfTH4jvOpB9BeQLSMetcwmQ-3RD734T1hcNqHUOkQM8yTkcaV1waGC2-E0PNksu4NaIr0tgsmfN-u2Etsk7bY-Gs1dV8oSgVU9pUX2o/s320/adfmfApplication.png" width="320" /></a></div>
<br />
As you can see, adfmf-application.xml has three entries. One for each feature. This was automatically done because we had the checkbox checked two screens ago ("<b>add a corresponding feautre reference to adfmf-application.xml"</b>)<br />
<br />
So what have we done so far?<br />
Why dont we deploy to see for ourselves!!??<br />
<br />
First we have to create a deployment profile for the iOS platform<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGKqaZQeryp9v01vOheIUy3ZcOGeifCXcL3r4gtDWL9PMOF1G8zovANZc8sF5YnSaZ_Qo-DiMguqLMinLnJGlP-vBr-c9Tsj4B1OQ5_cHYPJBQPw0z5A5THkfRUwIRwT0-qaPnGoOebeY/s1600/deploymentProfile.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="148" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGKqaZQeryp9v01vOheIUy3ZcOGeifCXcL3r4gtDWL9PMOF1G8zovANZc8sF5YnSaZ_Qo-DiMguqLMinLnJGlP-vBr-c9Tsj4B1OQ5_cHYPJBQPw0z5A5THkfRUwIRwT0-qaPnGoOebeY/s320/deploymentProfile.png" width="320" /></a></div>
<br />
<br />
Lets deploy to simulator now:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiW1rpmSAWolq2bu8iaC8S7MdDKonwSKkeNocVYoe0NlsukEVD9XBuDOicNmdulqxbJCKqRnKi3E4NjDFSWyS12Hx0iWwnG8ai39POSDVO7syO-dbCeJNSVMQQpTrToJlC_P3TlXhw7a24/s1600/firstRun.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiW1rpmSAWolq2bu8iaC8S7MdDKonwSKkeNocVYoe0NlsukEVD9XBuDOicNmdulqxbJCKqRnKi3E4NjDFSWyS12Hx0iWwnG8ai39POSDVO7syO-dbCeJNSVMQQpTrToJlC_P3TlXhw7a24/s320/firstRun.png" width="164" /></a></div>
<br />
<br />
As you can see, each feature is displayed as a part of the navigationBar.. Yes that thing at the bottom of the screen is the navigationBar<br />
<br />
-<b>Can we remove the navigation Bar? Or at least can we control which feature is going to be displayed??</b><br />
<b><br /></b>
<b>Yeap! </b><br />
<b><br /></b>
This is configured in the adfmf-application.xml file descriptor. With simple declarative development!<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_pQGW2Phsc_4nSbF-ifGmYOHYSGV2zKSpi-2Mx97hR4oSSamKTRFqg1JeORiFnRjw5xTsHX3plhLE7ViwGlNHAmgpGNqp4TTo1ALdtdVy3cUF7xAdGuSIjaAPHzvB6FB1y6Wni8nV3fw/s1600/NavigationBar.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="269" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_pQGW2Phsc_4nSbF-ifGmYOHYSGV2zKSpi-2Mx97hR4oSSamKTRFqg1JeORiFnRjw5xTsHX3plhLE7ViwGlNHAmgpGNqp4TTo1ALdtdVy3cUF7xAdGuSIjaAPHzvB6FB1y6Wni8nV3fw/s320/NavigationBar.png" width="320" /></a></div>
<br />
So, with those two checkBoxes we control the NavigationBar.<br />
And yes, you can configure which feature will be shown in your navigationBar!<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxB-L9OFlyZzB_IGU8NtER4qOeMGIehkab48vhT-BRY07YzXSjk4-HFutRsACLv3I38Vou73yF0ArwWZ_Os48c7gAiQLZWB0RP5DequArRDYLm-I0p0g8Sgw0eMbAFNYBY9NQLpmX6-k8/s1600/controlNavigationBarFeatures.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="72" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxB-L9OFlyZzB_IGU8NtER4qOeMGIehkab48vhT-BRY07YzXSjk4-HFutRsACLv3I38Vou73yF0ArwWZ_Os48c7gAiQLZWB0RP5DequArRDYLm-I0p0g8Sgw0eMbAFNYBY9NQLpmX6-k8/s320/controlNavigationBarFeatures.png" width="320" /></a></div>
<br />
<br />
-uhm.. Excuse me, sorry! You<br />
-me?<br />
-Yes you.. no not you, the guy next to you.<br />
- there is only a dog next to me..<br />
-The other side next to you...<br />
-Be specific please..<br />
-On your right<br />
-It is still the dog..<br />
-.... On your left please<br />
-Who?? mee???<br />
-YESS!!! you!<br />
-what? how can I help you?<br />
<br />
-<b>What is spring board?</b><br />
-Spring Board is the so called first wave of your astonishing application! Is the first screen your users will see!<br />
Since it is that important.. you can choose how it can look like.. The below screen shows the default springBar<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg01M6JK6K0_SJSu1NZjEbcZTj-be2fsfNYqh-6VQp3Uq3N30SjFnG0VS5Wr24D-39LVna_AlADQ6muBV7Wxwy36q-Lc_Qf325ywqKO2KK3R7CkzZ13RaOqTKrdpmnhWEWgkRSnVjJ3IWc/s1600/springBoardDefaultScreen.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg01M6JK6K0_SJSu1NZjEbcZTj-be2fsfNYqh-6VQp3Uq3N30SjFnG0VS5Wr24D-39LVna_AlADQ6muBV7Wxwy36q-Lc_Qf325ywqKO2KK3R7CkzZ13RaOqTKrdpmnhWEWgkRSnVjJ3IWc/s320/springBoardDefaultScreen.png" width="164" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
And the configuration is done in , <b>you guessed it right!!!</b> in the <b>adfmf-application.xml</b></div>
<div class="separator" style="clear: both; text-align: center;">
<b><br /></b></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNFaMV8lQjU9LdPzSZGWYQlDXI_qAolU4IkAFJOhDpkKB9UXyKelRMCx9ThGeQNOMmg4LZWJapjUDEBx-qczrDlZ6Q5C3bGDeWm9DgeP0VZ0kI9mWYUUCKAOwc5_eqFu_A3irv74l2LuU/s1600/springBoard.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="258" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNFaMV8lQjU9LdPzSZGWYQlDXI_qAolU4IkAFJOhDpkKB9UXyKelRMCx9ThGeQNOMmg4LZWJapjUDEBx-qczrDlZ6Q5C3bGDeWm9DgeP0VZ0kI9mWYUUCKAOwc5_eqFu_A3irv74l2LuU/s320/springBoard.png" width="320" /></a></div>
<br />
<br />
So what have we learned until now??<br />
<br />
<b>adfmf-application.xml is the file descriptor that holds the general behaviour of the application.</b><br />
<br />
<b>adfmf-feature.xml is the file descriptor that holds a feature that is going to be injected in the application.</b><br />
<b><br /></b>
<b>We can have as many features as we want since it is not mandatory to be part of the application.</b><br />
<b><br /></b>
<b>In simple words (literally)</b><br />
<b><br /></b>
1) Create your application (we are going to see more in the near future)<br />
2) Create the feature<br />
3) Add your pages( html etc..)<br />
4) Include the feature in the adfmf-application.xml descriptor in order to be part of the application.<br />
<b><br /></b>
<br />
Well thats it for now. Another article is already on its way! We are going to try and answer all questions that might come up and hopefully we will have a better understanding<br />
<br />
<br />
Regards,<br />
Dimitrios.</div>
Anonymoushttp://www.blogger.com/profile/03186199307026201300noreply@blogger.com0tag:blogger.com,1999:blog-294172151396534006.post-34449173415937430702012-11-03T16:33:00.002-07:002012-11-03T16:33:55.606-07:00Oracle ADF Mobile World! Hello!<div dir="ltr" style="text-align: left;" trbidi="on">
<div>
<br /></div>
Hello,<br />
ADF Mobile,<br />
World!<br />
As you probably already know..<br />
<br />
ADF Mobile is here!<br />
<br />
Here are some links that will make you feel at home..<br />
<br />
Home page of ADF Mobile:<br />
<a href="http://www.oracle.com/technetwork/developer-tools/adf/overview/adf-mobile-096323.html">http://www.oracle.com/technetwork/developer-tools/adf/overview/adf-mobile-096323.html</a><br />
<br />
How to setup your JDeveloper:<br />
<a href="http://docs.oracle.com/cd/E18941_01/tutorials/MobileTutorial/jdtut_11r2_54_1.html">http://docs.oracle.com/cd/E18941_01/tutorials/MobileTutorial/jdtut_11r2_54_1.html</a><br />
<br />
Developer's Guide<br />
<a href="http://docs.oracle.com/cd/E35521_01/doc.111230/e24475/toc.htm">http://docs.oracle.com/cd/E35521_01/doc.111230/e24475/toc.htm</a><br />
<br />
Some sales stuff<br />
<a href="http://www.oracle.com/technetwork/developer-tools/jdev/adf-mobile-development-129800.pdf">http://www.oracle.com/technetwork/developer-tools/jdev/adf-mobile-development-129800.pdf</a><br />
<br />
And of course, the samples!! Samples are good. We need samples! Samples are goooood<br />
<a href="http://www.oracle.com/technetwork/developer-tools/adf/adf-mobile-samples-1865088.html">http://www.oracle.com/technetwork/developer-tools/adf/adf-mobile-samples-1865088.html</a><br />
<br />
Additional references<br />
<a href="http://technology.amis.nl/2012/10/22/adf-mobile-is-now-generally-available/">http://technology.amis.nl/2012/10/22/adf-mobile-is-now-generally-available/</a><br />
<br />
Well,<br />
That is all we need for now..<br />
<br />
This post is about mobile.. (daaaaaawn of the dead).. obviously..<br />
So lets get started.<br />
<br />
This post does not aim to replace any of the official documentation.<br />
<br />
First we have to setup our JDeveloper (11.1.2.3.0) for the ADF mobile development<br />
(<b>everything in this post is well documented in the above links.. this is just for reference flavour and colour</b>)<br />
<br />
<ol style="text-align: left;">
<li>You have to install the plugin for ADF Mobile development. This is fairly easy. Just go to updates of your JDeveloper and update it through the updates process.</li>
<li>After you have downloaded and installed the plugin, you have to restart. So, restart.</li>
<li>Then, you have to load the extension. That is easy as well, just go to tools-preferences-<b>ADF mobile</b> and press "<b>Load Extension</b>"</li>
<li>After that you have to select the platform you want to develop on. <b>This sample uses iOS</b>. <b>You have to install Xcode to get it working on your Mac</b>. In case you noticed. There is a strange behaviour in the preferences of ADF Mobile. If you select iOS and then select ADF Mobile and platforms back again, you will have the Android platform selected... (see <a href="http://screencast.com/t/vKzfKJ15Z8t" target="_blank">video here</a>). The good thing is that it does not loose your paths. For those of you that dont have the simulator path set by default. The hint below the input text is quite good. Just follow the path and in your mac and you will be fine. Dont forget, you have to install <b>Xcode</b> first!!</li>
<li><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqY_EIWy0-uZwOV1cfzucvBxbDt3-ex9Y_5yRAAicKYwtoVJYsxAOf8kQY5GZNi8SonBJQEWLn22b816bymyKpwhsI17dEreo62qXdeKthQZ8FUkcEYeO7F0fXirThsSGyuOgdE6ZLsws/s1600/ADFMobilePlatforms.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img alt="ADF Mobile Platforms on JDeveloper's Preferences" border="0" height="187" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqY_EIWy0-uZwOV1cfzucvBxbDt3-ex9Y_5yRAAicKYwtoVJYsxAOf8kQY5GZNi8SonBJQEWLn22b816bymyKpwhsI17dEreo62qXdeKthQZ8FUkcEYeO7F0fXirThsSGyuOgdE6ZLsws/s320/ADFMobilePlatforms.png" title="ADF Mobile Platforms" width="320" /></a></li>
<li>OK, we have that working now! (We will see if that strange behaviour is going to affect us in the process). What else is there? Oh yes. the Sample application!!!!</li>
</ol>
<div>
But wait?? I have some questions first! What is going on with the DB? Do we needs Web Services?? Do we have to bake a cake first?</div>
<div>
<br /></div>
<div>
<b>is there anything else that we have to do prior to develop a very simple ADF mobile application??</b></div>
<div>
<b><br /></b></div>
<div>
yes of course. There are lots of things to do before making a very first ADF mobile application..</div>
<div>
Why dont we understand the architecture first? (see references).</div>
<div>
Why dont we bake a cake and cook a meal first?</div>
<div>
Why dont we make up excuses in order to postpone the inevitable? </div>
<div>
<br /></div>
<div>
<b>The world went mobile</b>!!!</div>
<div>
<br /></div>
<div>
Lets get mobile then! </div>
<div>
Lets start coding and we will get the rest in time. There are lots to learn indeed. But lets make small steps.</div>
<div>
<br /></div>
<div>
No! I would like to learn the bigger picture now! I want to know what is going on.. I want to know how to talk the language.</div>
<div>
<br /></div>
<div>
Alright.. It sounds like you want to know everything about snowboarding without even trying to see if you can simply balance and slide...</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://docs.oracle.com/cd/E35521_01/doc.111230/e24475/img/arch_final.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="ADF mobile Architecture " border="0" height="301" src="http://docs.oracle.com/cd/E35521_01/doc.111230/e24475/img/arch_final.png" title="Oracle's documentation about ADF mobile architecture" width="320" /></a></div>
<div>
<br /></div>
<div>
(image from official documentation)</div>
<div>
<br /></div>
<div>
Nice isn't it? do you feel better now? You like it dont you? Do you get the bigger picture now?</div>
<div>
great.</div>
<div>
By the way, do you have any questions?? I am sure you do. In fact we all do! But perhaps it would be a lot better if we see everything in slow motion and with small examples in a series of posts. At least that is my intention. Small and Simple for starters.</div>
<div>
<br /></div>
<div>
One interesting thing to notice here, apart the others, is the use of <b>PhoneGap</b>. As you can see in the above image, The Web View contains all the types of Views (Server HTML HTML5 etc..) and PhoneGap covers the gap between those views and the Devices..</div>
<div>
For more information about PhoneGap</div>
<div>
<br /></div>
<div>
<a href="http://phonegap.com/about/faq" target="_blank">Please visit the FAQ of PhoneGap itself.</a></div>
<div>
<br /></div>
<div>
The above link will give you enough answers to get the picture for now.</div>
<div>
Another very important thing is that with every ADF Mobile application, there is a small JVM included!</div>
<div>
<br /></div>
<div>
The following content is extracted from the official documentation:</div>
<div>
<ul style="background-color: white; font-family: Tahoma, sans-serif; font-size: small; text-align: -webkit-auto;">
<li><span class="bold" style="font-weight: bold;">Java runtime</span> powered by an embedded Java VM bundled with each application.</li>
</ul>
<div class="infoboxnote" style="background-color: white; border-bottom-color: gray; border-bottom-style: solid; border-bottom-width: 1pt; border-top-color: gray; border-top-style: solid; border-top-width: 1pt; font-family: Tahoma, sans-serif; font-size: small; margin: 4ex 141px; padding: 0.25em; text-align: -webkit-auto;">
<div class="notep1" style="font-weight: bold;">
Note:</div>
ADF Mobile's model-view-controller stack resides on a mobile device and represents reimplementation of ADF's model-view-controller layers. UI metadata is rendered to native components on device and is bound to the model through the ADF Model.</div>
<div style="background-color: white; font-family: Tahoma, sans-serif; font-size: small; text-align: -webkit-auto;">
<br /></div>
</div>
<div>
<br /></div>
<div>
You see that every application is powered by an embedded JVM !! And you can use that in your iPhone!!!</div>
<div>
<br /></div>
<div>
Without going to many details. The last thing that we note here is the <b>Local Data.</b></div>
<div>
<b><br /></b></div>
<div>
The following content is extracted from the official documentation:</div>
<div>
<br /></div>
<div>
<span class="bold" style="background-color: white; font-family: Tahoma, sans-serif; font-size: x-small; font-weight: bold; text-align: -webkit-auto;">Local Data</span><span style="background-color: white; font-family: Tahoma, sans-serif; font-size: x-small; text-align: -webkit-auto;"> refers to data stores that reside on the device. In ADF Mobile, these are implemented as encrypted SQLite databases. Create Retrieve Update Delete (CRUD) operations are supported to this local data store through the Java layer, using JDBC-based APIs.</span></div>
<br />
So in all: we will be using <b>phoneGap</b>, <b>JVM and embedded encrypted SQLite databases!!</b><br />
<br />
Which means that we can create applications that can store data in the local DB..<br />
<br />
I think this brief introduction gives the basic idea of ADF Mobile.<br />
<br />
On with the Coding!!<br />
<br />
Where were we? Oh yes! nowhere.. we just setup our environment.<br />
<br />
Wait! do we need a database for this sample application?<br />
No we don't.<br />
This is going to be fairly simple.<br />
<br />
So what do we do?<br />
Lets go bowling!<br />
<br />
Shut the front door!!!<br />
We are doing this.<br />
Just create a new application from JDeveloper<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVtdM9nZi-5iiVzgJalP1awdOfWzFhgrKw6ZYLOAdHTMbdcF3uRJzUMp_PhosjjZS2aiWnv2QmibpAjUIP7utDxXl_kkVqkcahrz5To0tOmp5CwPqvMFCzcQ97Wv1QsKG-asWxjR3Ur8Q/s1600/newADFMobileApp.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="New ADF Mobile application" border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVtdM9nZi-5iiVzgJalP1awdOfWzFhgrKw6ZYLOAdHTMbdcF3uRJzUMp_PhosjjZS2aiWnv2QmibpAjUIP7utDxXl_kkVqkcahrz5To0tOmp5CwPqvMFCzcQ97Wv1QsKG-asWxjR3Ur8Q/s320/newADFMobileApp.png" title="Create New ADF Mobile Application" width="320" /></a></div>
<br />
Just follow the wizards from then and eventually you will get the following:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvPOFc0wUGHKPvdJb5vVVvByGCv1iVzueGM1yG9pi8j8qHqfmS8nNUre9jUH4U_re-eS8CVLKlUu0CC09K8syaaq4khqcc0V3S_rKVJ4otg5lgChQT1GJbQz8xcU8yZ4CgfPUA2z3J28o/s1600/newApplicationDone.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="New ADF Mobile Application created." border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvPOFc0wUGHKPvdJb5vVVvByGCv1iVzueGM1yG9pi8j8qHqfmS8nNUre9jUH4U_re-eS8CVLKlUu0CC09K8syaaq4khqcc0V3S_rKVJ4otg5lgChQT1GJbQz8xcU8yZ4CgfPUA2z3J28o/s320/newApplicationDone.png" title="New ADF Mobile Application created" width="320" /></a></div>
<br />
Sorry what??<br />
<br />
What is that:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbH74KOWPMz_KwAP34lcKOtQFnlXzDE71kmG2XI1_X17nDpg9NncycTaLhzj6P_Yek9CUhHM2RdrwxovaQpC9WhPCPigTUlU_bWuPMMinrQVL2QYcvvyqUCws7s2Kxdt3ZSsEC22SA2nA/s1600/adfmf-feature.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt=" What is adfmf-features.xml" border="0" height="163" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbH74KOWPMz_KwAP34lcKOtQFnlXzDE71kmG2XI1_X17nDpg9NncycTaLhzj6P_Yek9CUhHM2RdrwxovaQpC9WhPCPigTUlU_bWuPMMinrQVL2QYcvvyqUCws7s2Kxdt3ZSsEC22SA2nA/s320/adfmf-feature.png" title=" What is adfmf-features.xml" width="320" /></a></div>
<br />
<br />
That is the adfmf-feature.xml file. This file is to configure the features of your application. We wont be needing this for now. But I am sure that some of you will want to search it a bit more. So here is the documentation:<br />
<br />
<a href="http://docs.oracle.com/cd/E35521_01/doc.111230/e24475/define_features.htm#autoId19">http://docs.oracle.com/cd/E35521_01/doc.111230/e24475/define_features.htm#autoId19</a><br />
<br />
The following content is extracted from the above link:<br />
<br />
<span style="background-color: white; font-family: Tahoma, sans-serif; font-size: x-small; text-align: -webkit-auto;">The </span><code style="background-color: white; font-size: 12px; text-align: -webkit-auto;">adfmf-feature.xml</code><span style="background-color: white; font-family: Tahoma, sans-serif; font-size: x-small; text-align: -webkit-auto;"> file </span><span style="background-color: white; font-family: Tahoma, sans-serif; font-size: x-small; text-align: -webkit-auto;">enables you to configure the actual mobile application features that are referenced by the </span><code style="background-color: white; font-size: 12px; text-align: -webkit-auto;"><adfmf:featurereference></adfmf:featurereference></code><span style="background-color: white; font-family: Tahoma, sans-serif; font-size: x-small; text-align: -webkit-auto;"> element in the corresponding </span><code style="background-color: white; font-size: 12px; text-align: -webkit-auto;">adfmf-application.xml</code><span style="background-color: white; font-family: Tahoma, sans-serif; font-size: x-small; text-align: -webkit-auto;"> file.</span><br />
<br />
So basically, what is says is, that<b> adfmf-feature.xml</b> is the configuration file of all the features your application might have. All those features are stored in the <b>adfmf-application.xml</b> file.<br />
<br />
That file is located in the descriptors section in JDeveloper. see image below:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXzZO7t_sTC3dPyiNxkq-mXNyLan_5CecFlNZYuiQmfN2cVB_IbY2aqltzpInQ4TZtECtpCLw4RMsaB_lfns4PnocdJEU-aG8vs6MWwxOIpnDpoYvkme_7opNO-UzQ3SmVsPPst-FCDmU/s1600/adfmf-application.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="ADF Mobile Application Resources section" border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXzZO7t_sTC3dPyiNxkq-mXNyLan_5CecFlNZYuiQmfN2cVB_IbY2aqltzpInQ4TZtECtpCLw4RMsaB_lfns4PnocdJEU-aG8vs6MWwxOIpnDpoYvkme_7opNO-UzQ3SmVsPPst-FCDmU/s320/adfmf-application.png" title="Application Resources" width="255" /></a></div>
<br />
<br />
So, <b>adfmf-application.xml</b> holds the features of your application and <b>adfmf-features.xml</b> configures it.<br />
Additional resource on the adfmf-application.xml and adfmf-features.xml in a more basic level.<br />
<a href="http://docs.oracle.com/cd/E35521_01/doc.111230/e24475/getting_started.htm#autoId3">http://docs.oracle.com/cd/E35521_01/doc.111230/e24475/getting_started.htm#autoId3</a><br />
<br />
More on that later on.<br />
<br />
An additional interesting thing, is that we already have a DataControl generated!<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaZOKrPlQoJbW0Bu91MlWkVOfno0xmdDZFsxBgW7vDzUk2k7J76RaF5lGcwHYkQJG8yyfQqqP8meb5qjQeQW_ZcxnJ74DC33UsT0DYmZJ_eKhJc-fLChbqNnuJ_tqDVeRj0GAhUADG90g/s1600/dataControl.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="List of all operations and methods from the Auto Generated Data Control" border="0" height="216" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaZOKrPlQoJbW0Bu91MlWkVOfno0xmdDZFsxBgW7vDzUk2k7J76RaF5lGcwHYkQJG8yyfQqqP8meb5qjQeQW_ZcxnJ74DC33UsT0DYmZJ_eKhJc-fLChbqNnuJ_tqDVeRj0GAhUADG90g/s320/dataControl.png" title="Auto Generated Data Control" width="320" /></a></div>
<br />
What is that DataControl about?<br />
That dataControl handles the operations on your device<br />
<br />
<a href="http://docs.oracle.com/cd/E35521_01/doc.111230/e24475/getting_started.htm#autoId3">http://docs.oracle.com/cd/E35521_01/doc.111230/e24475/getting_started.htm#autoId3</a><br />
<br />
The following content is extracted from the above link<br />
<br />
<span style="background-color: white; font-family: Tahoma, sans-serif; font-size: x-small; text-align: -webkit-auto;">After you complete an ADF Mobile application project, JDeveloper adds application-level and project-level artifacts</span><span style="background-color: white; font-family: Tahoma, sans-serif; font-size: x-small; text-align: -webkit-auto;">, JDeveloper creates the DeviceFeatures data control. The PhoneGap Java API is abstracted through this data control, thus enabling the application features implemented as ADF Mobile AMX to access various services embedded on the device. JDeveloper also creates the ApplicationFeatures data control, which enables you to build a springboard page. By dragging and dropping the operations provided by the DeviceFeatures data control into an ADF Mobile AMX page (which is described in </span><a href="http://docs.oracle.com/cd/E35521_01/doc.111230/e24475/amxbinding.htm#CHDIBFIG" style="background-color: white; background: inherit; color: #72007c; font-family: Tahoma, sans-serif; font-size: small; text-align: -webkit-auto;">Section 9.5, "Using the DeviceFeatures Data Control"</a><span style="background-color: white; font-family: Tahoma, sans-serif; font-size: x-small; text-align: -webkit-auto;">), you add functions to manage the user contacts stored on the device, create and send both e-mail and SMS text messages, ascertain the location of the device, use the device's camera, and retrieve images stored in the device's file system.</span><br />
<br />
That autogenerated DeviceFeatures DataControl is there to help <b>us access various services that are embedded on the device</b>. The ApplicationFeatures DataControl is a different story and we will talk about it in later posts.<br />
<br />
Ok. Lets try to create a simple page.<br />
<br />
In order to create a page, just right click on the ViewController and create a new html page.<br />
lets say HelloWorld.html<br />
The result will be something like the following:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhePp7Ued_fhio9sLHpX-uW2CrKxNgDmmi9y6bl6rOZtM1Bb5QFXwEw1zGO4A1Dd8zO4IswceHvHba0yhgDv-fesSS_kAmk-vS6vFaKvqoT8lnpneMEIst4cerjMFTIU-OCni93WWLYQ2c/s1600/newPageEmpty.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Empty page created and shown in JDeveloper" border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhePp7Ued_fhio9sLHpX-uW2CrKxNgDmmi9y6bl6rOZtM1Bb5QFXwEw1zGO4A1Dd8zO4IswceHvHba0yhgDv-fesSS_kAmk-vS6vFaKvqoT8lnpneMEIst4cerjMFTIU-OCni93WWLYQ2c/s320/newPageEmpty.png" title="Empty Page" width="320" /></a></div>
<br />
Write some text:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMvOMobCNVRSdSvTMFO_5F423etHtQE06QeaEPlWuNrW8ieNg7dw932Wm6XPfFRzZGpnjT_0pLLOMjmNEVYsdGIDx5E2cEz5vjP5Vg8N8Py9M0SR5Y7L6jbq54BHTK-bK34VpZYi8iDhg/s1600/testOnThePage.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Some text on the page." border="0" height="183" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMvOMobCNVRSdSvTMFO_5F423etHtQE06QeaEPlWuNrW8ieNg7dw932Wm6XPfFRzZGpnjT_0pLLOMjmNEVYsdGIDx5E2cEz5vjP5Vg8N8Py9M0SR5Y7L6jbq54BHTK-bK34VpZYi8iDhg/s320/testOnThePage.png" title="Text on page" width="320" /></a></div>
<br />
Are we there yet??<br />
no.<br />
Are we there yet?<br />
no.<br />
lets go bowling then!<br />
no.<br />
What else is there?<br />
Well, we need a feature!!<br />
Remember adfmf-features.xml file? great! go there! and add a new feature. place the name you want and make sure it is selected. Since this will be a local html page. we have to set it up as such. So in the properties of the feature, make sure that the type is html<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbLsEoRxLgvnRXvvu2e3Mb5vuEH4lJwCMQ62mHIAqxtZVBsRAFsmcB3fI3U2scQ7UEEdSPgo46l3b8oiWKVSKS82hKtxv5DdxPfxKcv5DTsjRlSccg7GpoAIv4uNc22UpdRzHM9v7mMfc/s1600/createANewFeatureForThePage.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="New Application feature" border="0" height="207" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbLsEoRxLgvnRXvvu2e3Mb5vuEH4lJwCMQ62mHIAqxtZVBsRAFsmcB3fI3U2scQ7UEEdSPgo46l3b8oiWKVSKS82hKtxv5DdxPfxKcv5DTsjRlSccg7GpoAIv4uNc22UpdRzHM9v7mMfc/s320/createANewFeatureForThePage.png" title="NewFeature" width="320" /></a></div>
<br />
Since this is going to be a local page, we have to provide the path.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnsdEuP9GbKVdaGYDn4gkKwPWpU3C13EcnHWtSQ8h6nUsMZsPgD30ZBn0B_8uzp-pNMtbc2QoShrps5Q-XF3aBAGo2MMXIhMt_9Vso9LiRbyTY8L3mKsXQ766U7aU5AciW1h2Nj97oyHg/s1600/LocatePage.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Wizard that locates the HelloWorld html page" border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnsdEuP9GbKVdaGYDn4gkKwPWpU3C13EcnHWtSQ8h6nUsMZsPgD30ZBn0B_8uzp-pNMtbc2QoShrps5Q-XF3aBAGo2MMXIhMt_9Vso9LiRbyTY8L3mKsXQ766U7aU5AciW1h2Nj97oyHg/s320/LocatePage.png" title="Locate local page" width="320" /></a></div>
<br />
thats it!<br />
<br />
All we have to do is to package it as an iOS application and test it with the simulator.<br />
This is not a simple right click and run.<br />
<br />
We have to create a deployment profile.. Since we want to run this with the iphone simulator.. we have to create the deployment profile..<br />
So, right click on the Application and select deploy--- new deployment profile.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyrZ9ApG54NJp3gWekd7HqAjLYeJgPc2kMThd0zzvrSH-jjXalj8YzqEEwYzwBoyZ-CfxhzGvviDkBI8ZmjmTDFVc66SV_B4rqQ0wtv937t5RXVHllDnhElDOTUti_j5vf0J7V0-SgQVg/s1600/deploymentProfile.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="148" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyrZ9ApG54NJp3gWekd7HqAjLYeJgPc2kMThd0zzvrSH-jjXalj8YzqEEwYzwBoyZ-CfxhzGvviDkBI8ZmjmTDFVc66SV_B4rqQ0wtv937t5RXVHllDnhElDOTUti_j5vf0J7V0-SgQVg/s320/deploymentProfile.png" width="320" /></a></div>
<br />
Press ok.<br />
<br />
Then, make sure that the settings are correct for your simulator: I had to manually set them.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpBEf2O5cVsb8Nl4nD0pBoynMiQm-dHHMFNkQ2lSSFh1qYsjbASSZovGx5hTPpMq0zyFDs6ez457TqfIw3AcWssbLciZiB1UvPXi24wa5yACf8-o198XTNV1j03ODTQLYJdnRQ5kadP-8/s1600/iosOptions.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="228" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpBEf2O5cVsb8Nl4nD0pBoynMiQm-dHHMFNkQ2lSSFh1qYsjbASSZovGx5hTPpMq0zyFDs6ez457TqfIw3AcWssbLciZiB1UvPXi24wa5yACf8-o198XTNV1j03ODTQLYJdnRQ5kadP-8/s320/iosOptions.png" width="320" /></a></div>
<br />
Click ok and the deployment profile is ready.<br />
<br />
In order to test the application, right click on the application and select the profile you created previously and deploy it. This will start your iOS Simulator and you will be able to find your application<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEielDeB-fa0Vqrgk-2J08fhXYS-oIICry_SvN8qJQZOS2yjMmKImoI7Ij0ohPY7d0uOCh9xyf9ik_bVDFdARRwXv7pmw5fLAmNFGY_DXtKp1CFclajcEJ0TPu4q2Ygs0xDT7_d75GFeGuU/s1600/TheApp.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="ADF mobile Application deployed on iOS simulator" border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEielDeB-fa0Vqrgk-2J08fhXYS-oIICry_SvN8qJQZOS2yjMmKImoI7Ij0ohPY7d0uOCh9xyf9ik_bVDFdARRwXv7pmw5fLAmNFGY_DXtKp1CFclajcEJ0TPu4q2Ygs0xDT7_d75GFeGuU/s320/TheApp.png" title="iOS Simulator ADF Mobile application" width="164" /></a></div>
<br />
if you click on the application you will see our page!<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0-uHVljK9kTnMq0eq4BOblBkkoGOwQ7wPcALVmDjnT1SFyu5lz64tG7alPw0yFVwGhFMuAR85p773gn05QJQild6AVz0O5qLufWngZL2ip_uB6i_SZEWj706jKSk7fA83ixftoGz6DOA/s1600/TheAppWorks.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0-uHVljK9kTnMq0eq4BOblBkkoGOwQ7wPcALVmDjnT1SFyu5lz64tG7alPw0yFVwGhFMuAR85p773gn05QJQild6AVz0O5qLufWngZL2ip_uB6i_SZEWj706jKSk7fA83ixftoGz6DOA/s320/TheAppWorks.png" width="164" /></a></div>
<br />
And that is it!<br />
<br />
Once we understand how it works. one step at a time. it is fairly easy to remember.<br />
This is the beginning!<br />
<br />
Regards.</div>
Anonymoushttp://www.blogger.com/profile/03186199307026201300noreply@blogger.com3tag:blogger.com,1999:blog-294172151396534006.post-17915141950639629372012-10-25T14:58:00.000-07:002012-10-25T14:58:16.157-07:00Oracle ADF Real World Developer’s Guide by Jobinesh Purushothaman is published!<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="background-color: #fefdfa; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;">Hello All.</span><br />
<span style="background-color: #fefdfa; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;">it is my great pleasure to announce that </span><b style="background-color: #fefdfa; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"><a href="http://www.packtpub.com/oracle-application-development-framework-real-world-developers-guide/book" style="color: #7d181e; text-decoration: none;" target="_blank">Oracle ADF Real World Developer’s Guide</a> is published! </b><br />
<b style="background-color: #fefdfa; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"><br /></b>
<!--[if gte mso 9]><xml>
<o:DocumentProperties>
<o:Revision>0</o:Revision>
<o:TotalTime>0</o:TotalTime>
<o:Pages>1</o:Pages>
<o:Words>147</o:Words>
<o:Characters>838</o:Characters>
<o:Company>Free Lancer</o:Company>
<o:Lines>6</o:Lines>
<o:Paragraphs>1</o:Paragraphs>
<o:CharactersWithSpaces>984</o:CharactersWithSpaces>
<o:Version>14.0</o:Version>
</o:DocumentProperties>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
</o:OfficeDocumentSettings>
</xml><![endif]-->
<!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>JA</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
<w:DontFlipMirrorIndents/>
<w:OverrideTableStyleHps/>
<w:UseFELayout/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="276">
<w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" Priority="39" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" Name="toc 9"/>
<w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
</w:LatentStyles>
</xml><![endif]-->
<!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:Cambria;
mso-ascii-font-family:Cambria;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Cambria;
mso-hansi-theme-font:minor-latin;}
</style>
<![endif]-->
<!--StartFragment-->
<br />
<div style="margin-bottom: .0001pt; margin: 0cm;">
<!--[if gte mso 9]><xml>
<o:DocumentProperties>
<o:Revision>0</o:Revision>
<o:TotalTime>0</o:TotalTime>
<o:Pages>1</o:Pages>
<o:Words>147</o:Words>
<o:Characters>838</o:Characters>
<o:Company>Free Lancer</o:Company>
<o:Lines>6</o:Lines>
<o:Paragraphs>1</o:Paragraphs>
<o:CharactersWithSpaces>984</o:CharactersWithSpaces>
<o:Version>14.0</o:Version>
</o:DocumentProperties>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
</o:OfficeDocumentSettings>
</xml><![endif]-->
<!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>JA</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
<w:DontFlipMirrorIndents/>
<w:OverrideTableStyleHps/>
<w:UseFELayout/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="276">
<w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" Priority="39" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" Name="toc 9"/>
<w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
</w:LatentStyles>
</xml><![endif]-->
<!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:Cambria;
mso-ascii-font-family:Cambria;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Cambria;
mso-hansi-theme-font:minor-latin;}
</style>
<![endif]-->
<!--StartFragment-->
</div>
<div style="margin-bottom: .0001pt; margin: 0cm;">
<!--[if gte mso 9]><xml>
<o:DocumentProperties>
<o:Revision>0</o:Revision>
<o:TotalTime>0</o:TotalTime>
<o:Pages>1</o:Pages>
<o:Words>147</o:Words>
<o:Characters>838</o:Characters>
<o:Company>Free Lancer</o:Company>
<o:Lines>6</o:Lines>
<o:Paragraphs>1</o:Paragraphs>
<o:CharactersWithSpaces>984</o:CharactersWithSpaces>
<o:Version>14.0</o:Version>
</o:DocumentProperties>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
</o:OfficeDocumentSettings>
</xml><![endif]-->
<!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>JA</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
<w:DontFlipMirrorIndents/>
<w:OverrideTableStyleHps/>
<w:UseFELayout/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="276">
<w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" Priority="39" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" Name="toc 9"/>
<w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
</w:LatentStyles>
</xml><![endif]-->
<!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:Cambria;
mso-ascii-font-family:Cambria;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Cambria;
mso-hansi-theme-font:minor-latin;}
</style>
<![endif]-->
<!--StartFragment-->
</div>
<div style="margin-bottom: .0001pt; margin: 0cm;">
<span style="color: #333333; font-family: Arial;">I had the priviledge to be one of the technical reviewers of
this book. </span><o:p></o:p></div>
<div style="margin-bottom: .0001pt; margin: 0cm;">
<span style="color: #333333; font-family: Arial;"><br />
Jobinesh is really explaining things easily without losing focus of the real
need. The book is full of useful information and it will help developers and architects during their everyday work. Chalenging requirements are explained
in an easy and understandable way. The best thing about this book, in my humble
opinion, is that, Jobinesh covers all "difficult" topics about ADF and manages to
promote a simple way of understanding them.</span><o:p></o:p></div>
<div style="margin-bottom: .0001pt; margin: 0cm;">
<span style="color: #333333; font-family: Arial;"><br /></span></div>
<div style="margin-bottom: .0001pt; margin: 0cm;">
<span style="color: #333333; font-family: Arial;">You will find a lot of useful information in this book.</span><o:p></o:p></div>
<div style="margin-bottom: .0001pt; margin: 0cm;">
<span style="color: #333333; font-family: Arial;"><br />
<b>At this point, I would like to thank Jobinesh Purushothaman and Packt
Publishing for giving me the opportunity to review this book. It has been a
great pleasure!</b></span><o:p></o:p></div>
<div style="margin-bottom: .0001pt; margin: 0cm;">
<span style="color: #333333; font-family: Arial;"><br />
The below content is extracted from the original post of Jobinesh.</span><o:p></o:p></div>
<div style="margin-bottom: .0001pt; margin: 0cm;">
<br /></div>
<div style="margin-bottom: .0001pt; margin: 0cm;">
<span style="color: #333333; font-family: Arial;"><br />
<a href="http://jobinesh.blogspot.co.uk/2012/10/oracle-adf-real-world-developers-guide.html">http://jobinesh.blogspot.co.uk/2012/10/oracle-adf-real-world-developers-guide.html</a></span><o:p></o:p></div>
<!--EndFragment--><br />
<!--EndFragment-->
<!--EndFragment--><br />
<!--EndFragment--><br />
<span style="color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: x-small;"><span style="line-height: 18px;"><br /></span></span>
<span style="background-color: #fefdfa; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;">Book Details : </span><br />
<b style="background-color: #fefdfa; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;">Paperback : </b><span style="background-color: #fefdfa; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;">590 pages [ 235mm x 191mm ]</span><br />
<b style="background-color: #fefdfa; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;">Release Date : </b><span class="date-display-single" style="background-color: #fefdfa; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;">October 2012</span><br />
<b style="background-color: #fefdfa; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;">ISBN : </b><span style="background-color: #fefdfa; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;">1849684820</span><br />
<b style="background-color: #fefdfa; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;">ISBN 13 : </b><span style="background-color: #fefdfa; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;">9781849684828</span><br />
<b style="background-color: #fefdfa; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;">Author(s) : </b><a href="http://www.packtpub.com/authors/profiles/jobinesh-purushothaman" style="background-color: #fefdfa; color: #7d181e; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px; text-decoration: none;">Jobinesh Purushothaman </a><br />
<b style="background-color: #fefdfa; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;">Topics and Technologies : </b><span style="background-color: #fefdfa; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;">All Books, Enterprise, Oracle </span><br />
<br style="background-color: #fefdfa; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;" />
<a href="http://cdn3.cf.packtpub.com/sites/default/files/imagecache/productview_larger/4828EN_Oracle%20ADF%20Real%20World%20Developer%E2%80%99s%20Guidecov.jpg" imageanchor="1" style="background-color: #fefdfa; clear: left; color: #7d181e; float: left; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px; margin-bottom: 1em; margin-right: 1em; text-decoration: none;"><img alt="Oracle ADF Real World Developer’s Guide " border="0" src="http://cdn3.cf.packtpub.com/sites/default/files/imagecache/productview_larger/4828EN_Oracle%20ADF%20Real%20World%20Developer%E2%80%99s%20Guidecov.jpg" style="-webkit-box-shadow: rgba(0, 0, 0, 0.2) 0px 0px 20px; background-color: white; background-position: initial initial; background-repeat: initial initial; border-bottom-left-radius: 5px; border-bottom-right-radius: 5px; border-top-left-radius: 5px; border-top-right-radius: 5px; border: 1px solid rgb(204, 204, 204); box-shadow: rgba(0, 0, 0, 0.2) 0px 0px 20px; padding: 8px; position: relative;" /></a><span style="background-color: #fefdfa; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;">This book is designed to take programmers beyond visual and declarative programming model and enable them to customize the framework features to meet the real world application development challenges. Many of the framework features are discussed along with real-life use cases and code samples which will definitely help developers to design and develop successful enterprise applications.</span><br />
<br style="background-color: #fefdfa; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;" />
<span style="background-color: #fefdfa; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;">To learn more, visit </span><a href="http://www.packtpub.com/oracle-application-development-framework-real-world-developers-guide/book" moz-do-not-send="true" style="background-color: #fefdfa; color: #7d181e; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px; text-decoration: none;">http://www.packtpub.com/oracle-application-development-framework-real-world-developers-guide/book</a><span style="background-color: #fefdfa; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;">.</span><br />
<br style="background-color: #fefdfa; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;" />
<br style="background-color: #fefdfa; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;" />
<br style="background-color: #fefdfa; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;" />
<b style="background-color: #fefdfa; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"><u>Contents Covered in this Book</u></b><br />
<b style="background-color: #fefdfa; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"><br /></b><span style="background-color: #fefdfa; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;">To know the contents covered in this book, follow the </span><a href="http://www.packtpub.com/oracle-application-development-framework-real-world-developers-guide/book" style="background-color: #fefdfa; color: #7d181e; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px; text-decoration: none;" target="_blank"><b>packtpub link for this book</b></a><span style="background-color: #fefdfa; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"> and click on </span><b style="background-color: #fefdfa; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;">Table of Contents</b><span style="background-color: #fefdfa; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;">.</span><br />
<br style="background-color: #fefdfa; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;" />
<span style="background-color: #fefdfa; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;">If you are buying this book, please make sure you read the following chapters as well (which are</span><b style="background-color: #fefdfa; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;">not </b><span style="background-color: #fefdfa; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;">included in the printed version of the book).</span><b style="background-color: #fefdfa; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"> </b><span style="background-color: #fefdfa; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;">You can </span><b style="background-color: #fefdfa; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;">access these chapter on-line</b><span style="background-color: #fefdfa; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"> if you buy the printed/pdf/eBook copy of the book. These chapters contain a lot of interesting things and tips which you may find very useful to understand the internals of the framework.</span><br />
<ul style="background-color: #fefdfa; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px; list-style-image: initial; list-style-position: initial; margin: 0.5em 0px; padding: 0px 2.5em;">
<li style="border: none; margin: 0px 0px 0.25em; padding: 0.25em 0px;"><b>Chapter 13, Building Business Services with EJB</b>, explains how Oracle ADF helps you to declaratively build user interfaces for Enterprise Java Beans (EJB) based services. You can download this chapter from http://www.packtpub.com/sites/default/files/downloads/4828EN_Chapter13_Building_Business Services_with_EJB.pdf. </li>
<li style="border: none; margin: 0px 0px 0.25em; padding: 0.25em 0px;"><b>Chapter 14, Securing Fusion Web Applications</b>, describes how you can visually enable security in different layers of your Fusion web application. A lot of useful code samples and security use cases are discussed here. You can download this chapter from http://www.packtpub.com/sites/default/files/downloads/4828EN_Chapter14_Securing_Fusion_Web_Applications.pdf.</li>
<li style="border: none; margin: 0px 0px 0.25em; padding: 0.25em 0px;"><b>Appendix, More on ADF Business Components and Fusion Page Runtime</b>, discusses various useful features and techniques for ADF Business Components. This chapter covers the topics such as page life cycle for a Fusion page with region, transaction management in Fusion web applications, Building a dynamic model-driven UI with ADF, and so on. You can download this appendix from http://www.packtpub.com/sites/default/files/downloads/4828EN_Appendix_More_on_ADF_Business_Components_and_Fusion_Page_Runtime.pdf</li>
</ul>
<b style="background-color: #fefdfa; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"><u>Sample Chapters</u></b><br />
<b style="background-color: #fefdfa; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"><br /></b><span style="background-color: #fefdfa; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;">To get a feel of the content, a sample chapter is made available for public. To access it click on </span><b style="background-color: #fefdfa; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"><a href="http://www.packtpub.com/oracle-application-development-framework-real-world-developers-guide/book" style="color: #7d181e; text-decoration: none;" target="_blank">packtpub link for this book</a></b><span style="background-color: #fefdfa; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;">, and select </span><b style="background-color: #fefdfa; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;">Sample Chapter</b><span style="background-color: #fefdfa; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"> tab.</span><br />
<div style="background-color: #fefdfa; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;">
<br /></div>
</div>
Anonymoushttp://www.blogger.com/profile/03186199307026201300noreply@blogger.com0tag:blogger.com,1999:blog-294172151396534006.post-35653361485328592562012-09-12T11:39:00.000-07:002012-09-12T11:39:01.137-07:00Custom SelectionListener for af:table with select many option. ADF BC 11g<div dir="ltr" style="text-align: left;" trbidi="on">
Hi,<br />
In this example we are going to create a custom Selection Listener for an af:table.<br />
Furthermore, we are going to investigate how the Selection Listener works in the case where the table gives the ability to the user to <b>select more the one record</b>.<br />
After this example we will be able to understand what is going on in the above scenario.<br />
<br />
<a href="http://adfsampleslist.googlecode.com/files/SelectManyTableSelectionListenerInvestigation.zip" target="_blank">Download Sample Application.</a><br />
<br />
In this example we are going to use the HR schema and the <b>table Countries</b>. We will be using also <b>JDeveloper 11.1.1.6.0</b>.<br />
<br />
The Requirement:<br />
<b>We would like to have a table of Countries where, we will be able to select more than one rows (Countries).</b><br />
<b>While the selection process takes place, we would like to see a label on the side that keeps updating with the names of the countries that are being selected. Furthermore, when a row (country) is deselected, the label will be updated again to reflect the names properly.</b><br />
<br />
Simple right?<br />
Imagine, all the people.. living all in peaace ou ouo ououou..<br />
Now that I have your attention..<br />
First we will generate the Business components.<br />
A quick refresher can be found <a href="http://dstas.blogspot.com/2012/03/adf-bc-getting-started-how-to-generate.html" target="_blank">here</a>.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgE6kpCFWpKUTachTKJ2MbZy4baNkWUkEIfePqO8R9birinaPCdnecg8Ht8Ss9DSm2_0rP2wBZ9kameBcidxKCe40vsxFTtHj1DFqhqDd8bMvgHLpdSphQgJkBKpFrpS2_xHScJn7IbP48/s1600/BCReady.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="163" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgE6kpCFWpKUTachTKJ2MbZy4baNkWUkEIfePqO8R9birinaPCdnecg8Ht8Ss9DSm2_0rP2wBZ9kameBcidxKCe40vsxFTtHj1DFqhqDd8bMvgHLpdSphQgJkBKpFrpS2_xHScJn7IbP48/s320/BCReady.png" width="320" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
After that is done, we are going to create our simple page with the af:table from that View object (Countries)<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJZLwdAZPrsUQfEx-p6r-zHigiUZBZHzSntyTH8mkxjv17IvuNHjUeUL2UnCM6GLPvd6pj9Vyn9NCjf7lbdYEao555aPeobV6hFvIc7r6Ak8-iZ2lzHHaIUEcpZF30XJ20nhSexpwy7mk/s1600/simpleTable.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJZLwdAZPrsUQfEx-p6r-zHigiUZBZHzSntyTH8mkxjv17IvuNHjUeUL2UnCM6GLPvd6pj9Vyn9NCjf7lbdYEao555aPeobV6hFvIc7r6Ak8-iZ2lzHHaIUEcpZF30XJ20nhSexpwy7mk/s320/simpleTable.png" width="274" /></a></div>
<br />
<br />
In order to enable the select many on our table. It is quite easy. It is just a property in the table.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgyufgtTFHfz6j-Y5b1TgKIyZpQCl7_g4GyPew4I7OoQldGAMIF7Lp8n_4B7L9sRm9vOLStgA-mUpN5uhbEemG1pl3l6Nfdz9gG03oejLQOMvB6arkLLo_Q2H-HV0qyAYjEvV4zlxiLOQ/s1600/selectMultiple.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="86" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgyufgtTFHfz6j-Y5b1TgKIyZpQCl7_g4GyPew4I7OoQldGAMIF7Lp8n_4B7L9sRm9vOLStgA-mUpN5uhbEemG1pl3l6Nfdz9gG03oejLQOMvB6arkLLo_Q2H-HV0qyAYjEvV4zlxiLOQ/s320/selectMultiple.png" width="320" /></a></div>
<br />
I know, you can do it, while dropping the iterator onto the page. I preferred to show the property instead. Good for you to notice!<br />
<br />
Right. Now we have to set our selection listener.<br />
This is quite easy:<br />
Just locate the selection listener<br />
<br />
All we have to do now is to setup our custom Selection Listener.<br />
Ou custom listener will be written in JAVA method in a JAVA class. So we have to create a new JAVA class and a method inside it. It will take some time right?<br />
No. JDeveloper takes care of those things for you. Check the picture below:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZj1VernPwk3pEenJdoTMbxPzCqN8sOeTLzxotPwiZNNaCAPRj31pC00docJbKVzktdh8OAwecCuylWGkZXaVbEFgMa5RT1Pl034YFbLUqoqxSl2NiLxsA8hjNo64SM8jVw_agBoZpGfo/s1600/customListener.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="176" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZj1VernPwk3pEenJdoTMbxPzCqN8sOeTLzxotPwiZNNaCAPRj31pC00docJbKVzktdh8OAwecCuylWGkZXaVbEFgMa5RT1Pl034YFbLUqoqxSl2NiLxsA8hjNo64SM8jVw_agBoZpGfo/s320/customListener.png" width="320" /></a></div>
<br />
<br />
In the small window, you can press <b>new</b> and you JDeveloper will create for you all you need.<br />
In this example I placed the names shown in the screen.<br />
So now, we already have our class, properly configured, and a method that accepts a Selection Event.<br />
<br />
Prior to implementing this, in the newly created java class, we are going to keep the names of the selected rows in our table. We are going to that in the class that holds our custom selection Listener. We are going to create an instance variable of type String with it's accessors:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-mGcOyoSBNRmGuE6VjI1lqYMrckSGsYv_Dz2PYbbtl_rI9zdTa4gnmpttbCDA3ubbMYsJV5PDvUQ3N_hEy-SglHQzNDsADEy62JzN6BR2YIrPXmNAYM6LD0zuYuLciN2cPMOGJTr9aMs/s1600/countriesSelectedInstanceVariable.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="84" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-mGcOyoSBNRmGuE6VjI1lqYMrckSGsYv_Dz2PYbbtl_rI9zdTa4gnmpttbCDA3ubbMYsJV5PDvUQ3N_hEy-SglHQzNDsADEy62JzN6BR2YIrPXmNAYM6LD0zuYuLciN2cPMOGJTr9aMs/s320/countriesSelectedInstanceVariable.png" width="320" /></a></div>
<br />
<br />
That String is going to hold all the names of the rows we select or deselect at runtime. Cool isn't it?<br />
<br />
Remember, we are on a select many situation here..<br />
<br />
A question first.<br />
if you create a method in your Application Module that will return the current row of our ViewObject. What do you think that it will return when we select 5 rows and immediately call it?<br />
<br />
I dare you to try it! :) (The code is there in the sample application).<br />
Well, as far as I know, you can get only one row as the current one. So, there must be one of the selected. (it is.. randomly, it is one).<br />
<br />
So how are we supposed to do a custom selection for many records?<br />
Exactly the same way as we would have done for a single selection. Simple. The code exists (Check out the references below for the links).<br />
The difference that we are going to do here is to get the selected ones and loop over them in order to get the information we want and display it on another output text.<br />
Eventually we will be having something like the following:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYX9qlUj8fVYnKaMQgTixomEd8h0S0JyXChrJGHwHI6vem1AuM17fAqi0zsNitkNbpqfIDtZ6WL7h28l22vEEfBzncdc6EJ_uxXStb22336CLEkKR4xc3zaMTdNFyXkJLl-1Tjxgmuliw/s1600/ResultedScreen.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="126" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYX9qlUj8fVYnKaMQgTixomEd8h0S0JyXChrJGHwHI6vem1AuM17fAqi0zsNitkNbpqfIDtZ6WL7h28l22vEEfBzncdc6EJ_uxXStb22336CLEkKR4xc3zaMTdNFyXkJLl-1Tjxgmuliw/s320/ResultedScreen.png" width="320" /></a></div>
<br />
<br />
OK, on to the code<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvvfaeoW1yDAYhkinFCZeWE9j4hKvw6XxJUBe3Swuro-zdV8opAa3jfRBsy_BWohbrfndLoIpoxK2qlLh_4BslPKIEMVH_JjFdEpqJy2jhhLW1vchnRdzkvPgjXcuBPXmd_5katgmj4qc/s1600/theCodeMan.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="151" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvvfaeoW1yDAYhkinFCZeWE9j4hKvw6XxJUBe3Swuro-zdV8opAa3jfRBsy_BWohbrfndLoIpoxK2qlLh_4BslPKIEMVH_JjFdEpqJy2jhhLW1vchnRdzkvPgjXcuBPXmd_5katgmj4qc/s320/theCodeMan.png" width="320" /></a></div>
<br />
As you can see, it is a small addition. You have access to the rowKeys and thus you have access to the rows.<br />
<br />
<br />
<a href="http://adfsampleslist.googlecode.com/files/SelectManyTableSelectionListenerInvestigation.zip" target="_blank">Download Sample Application.</a><br />
<br />
<br />
References:<br />
<a href="http://technology.amis.nl/2010/08/10/adf-11g-that-is-one-very-smart-toolbarbutton/">http://technology.amis.nl/2010/08/10/adf-11g-that-is-one-very-smart-toolbarbutton/</a><br />
<br />
<a href="http://www.oracle.com/technetwork/developer-tools/adf/learnmore/23-generic-table-selection-listener-169162.pdf">http://www.oracle.com/technetwork/developer-tools/adf/learnmore/23-generic-table-selection-listener-169162.pdf</a><br />
<br />
Regards.</div>
Anonymoushttp://www.blogger.com/profile/03186199307026201300noreply@blogger.com0tag:blogger.com,1999:blog-294172151396534006.post-3337039178603150722012-09-10T07:54:00.000-07:002012-09-10T07:54:19.796-07:00Where are the DB connections stored in JDeveloper? <div dir="ltr" style="text-align: left;" trbidi="on">
Hi,<br />
For those of you who ever wondered:<br />
<b>Where does JDeveloper hold all those DB connections??</b><br />
<br />
The answer is:<br />
<b> </b><br />
<b>Per Version:</b><br />
<b>11gR1</b> <br />
C:\x<b>\system11.1.1.5.37.60.13\o.jdevimpl.rescat2</b><b><br /></b><br />
C:\x<b>\system11.1.1.6.38.61.92\o.jdevimpl.rescat2</b><br />
<b>11gR2</b><br />
<b> </b>C:\s\<b>system11.1.2.2.39.61.83.1\o.jdeveloper.rescat2.model</b><br />
<br />
In those folders you will notice the following structure:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXeWIQfGcQFDxIjF2I2gl689A_aFdO6SH9KzU2UYrrYoaYR56LOpcyk-DygOqnWRBLlsvHplBklEiwy0L7nH4PrFMMpkr9rzuT8BOixQVuiDQcgotC91L2WjsLQFLl3tigKUk0lkFwn5Q/s1600/folderStructure.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="75" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXeWIQfGcQFDxIjF2I2gl689A_aFdO6SH9KzU2UYrrYoaYR56LOpcyk-DygOqnWRBLlsvHplBklEiwy0L7nH4PrFMMpkr9rzuT8BOixQVuiDQcgotC91L2WjsLQFLl3tigKUk0lkFwn5Q/s320/folderStructure.png" width="320" /></a></div>
<br />
<br />
<br />
<br />
<br />
The most interesting part is the file inside the connections folder. if you open the folder you will see the file:<br />
<b>connections.xml</b><br />
here is a sample part of that file:<br />
<pre class="brush: xml"><reference classname="oracle.jdeveloper.db.adapter.DatabaseProvider" credentialstorekey="HR" name="HR" xmlns="">
<factory classname="oracle.jdeveloper.db.adapter.DatabaseProviderFactory">
<refaddresses>
<stringrefaddr addrtype="sid">
<contents>XE</contents>
</stringrefaddr>
<stringrefaddr addrtype="subtype">
<contents>oraJDBC</contents>
</stringrefaddr>
<stringrefaddr addrtype="hostname">
<contents>localhost</contents>
</stringrefaddr>
<stringrefaddr addrtype="user">
<contents>hr</contents>
</stringrefaddr>
<stringrefaddr addrtype="port">
<contents>1521</contents>
</stringrefaddr>
<securerefaddr addrtype="password">
<stringrefaddr addrtype="DeployPassword">
<contents>true</contents>
</stringrefaddr>
<stringrefaddr addrtype="oraDriverType">
<contents>thin</contents>
</stringrefaddr>
</securerefaddr></refaddresses>
</factory></reference>
</pre>
<br />
<br />
<br />
hooray!! there is our connection!<br />
We can simple take the xml and place it there! all will be fine!<br />
Well, not exactly, if you notice the xml more carefully, you will see that there is no password information.. and you can easily guess that the cwallet.sso file must be holding those references.<br />
Alright then! lets just copy those ones only.<br />
To be honest, I just did it and I must say that I do not see any problems what so far..<br />
The down side: You have to restart JDeveloper in order the changes to take effect. Which in my opinion, it will take more time to export and import properly.<br />
<br />
In conclusion, we now know where the DB connections are stored in our various versions of JDeveloper.<br />
<br />
<b>I will still use export and import as the prefered process. </b><br />
<br />
cheers.<b> </b><br />
<br />
References:<br />
<br />
<a href="http://www.baigzeeshan.com/2012/07/sharing-common-connections-between.html">http://www.baigzeeshan.com/2012/07/sharing-common-connections-between.html</a><br />
<br /></div>
Anonymoushttp://www.blogger.com/profile/03186199307026201300noreply@blogger.com0tag:blogger.com,1999:blog-294172151396534006.post-32193197568285966152012-09-07T15:04:00.001-07:002012-09-10T07:48:56.084-07:00Integrated Weblogic Domain creation. "The Server Instance cannot be started because the Integrated Weblogic domain was not built successfully." a workaround. JDeveloper <div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" style="text-align: left;" trbidi="on">
Hail,<br />
<br />
This is a quick note regarding default domain creation in Integrated Weblogic Server.<br />
This is a workaround that helped me and by no means, this is not a best practice. <br />
It is simply another approach and is provided as is. This is for my personal reference and notebook. It happened on a windows machine and frankly no specific answer, on the why this is happening came to mind, but a workaround was possible. I must say, that a lot of things learned during this investigation.<br />
<br />
In case you are first trying to run an application from within JDeveloper an you get the following:<br />
<br />
-------------------------------------------------------------------------------------------------------------<br />
<b>[Waiting for the domain to finish building...]<br />[11:56:47 AM] Creating Integrated Weblogic domain...<br />[11:56:47 AM] ERROR: An error occurred while building the default domain.<br />Please see this log file for more details:<br />C:\X</b>XXXX<b>\system11.1.2.2.39.61.83.1\o.j2ee.adrs\CreateDefaultDomain.log<br />The Server Instance cannot be started because the Integrated Weblogic domain was not built successfully.</b><br />
------------------------------------------------------------------------------------------------------------<br />
Before First, remove or rename your created DefaultDomain folder ( under <b>system11.1.2.2.39.61.83.1 folder) </b><br />
<br />
<br />
First, open the log file as suggested by JDeveloper<br />
<br />
Then, most probably, you will see something like the following:<br />
<br />
-----------------------------------------------------------------------------------------------------------<br />
<b>Log File: C:\X</b>XXXX<b>\system11.1.2.2.39.61.83.1\o.j2ee.adrs\CreateDefaultDomain.log<br />Label: JDEVADF_11.1.2.2.0_GENERIC_120418.2212.6183.1<br />Product Home: C:\XXXX\Oracle\Middleware\home22\jdeveloper\jdev\<br />Domain: C:\X</b>XXXX<b>\system11.1.2.2.39.61.83.1\DefaultDomain<br /><br />"C:\XXXX\Oracle\Middleware\home22\oracle_common\common\bin\wlst.cmd" "C:\X</b>XXXX<b>\system11.1.2.2.39.61.83.1\o.j2ee.adrs\CreateDefaultDomain.py"<br />Process started<br />Elapsed time: 47 ms</b> (<--- that was fast!)<br />
----------------------------------------------------------------------------------------------------------<br />
The <b>CreateDefaultDomain.py</b> script is the one that we have to call. but before doing this, we will edit it a bit..<br />
If you try to run it as is, it is going to complain that you havent set an enviornment variable<br />
Soo, you will simply add it in the created Script. This script is always regenerated when you recreate your system folder. After all it is just one line..<br />
<br />
=================================================================<br />
import os<br />
<b>os.putenv('ADRS_DOMAIN_PASSWORD', 'welcome1')</b><br />
if not 'ADRS_DOMAIN_PASSWORD' in os.environ:<br />
print("Error: ADRS_DOMAIN_PASSWORD environment variable not set.")<br />
exit() <br />
==================================================================<br />
<br />
C:\XXXX\Oracle\Middleware\home22\oracle_common\common\bin><b>wlst.cmd C:\XXXX\JDevSystems\jdev22\system11.1.2.2.39.61.83.1\o.j2ee.adrs\CreateDefaultDomain.py</b><br />
<br />
This will create succesfully your DefaultDomain for your integrated Weblogic Domain. Note that the domain is already extended by this script and *<b>some</b>* templates are added. <br />
<br />
from the same command line you can navigate to the bin folder of your fresh Domain and start your WebLogic<br />
<br />
C:\XXXXX\system11.1.2.2.39.61.83.1\DefaultDomaim> <b>startWebLogic.cmd</b><br />
<br />
This will start your integrated WebLogic.<br />
you can test the console if you want (after you see the status in <b>RUNNING</b>) ofcourse.<br />
my case: <b>127.0.0.1:7111/console </b><br />
<br />
The ports might be different or the IPs.. but you get the idea.<br />
<br />
What we have accomplished here is that you setup the DefaultDomain for the Integrated Weblogic <b>without using JDeveloper</b> <b>and bypassing the problem of JDeveloper.</b><br />
<br />
Of course we can be happy now! right? Not yet,<br />
we have to check if everything is ok with JDeveloper.<br />
<br />
Lets start JDeveloper now.<br />
If you start JDeveloper, things are rather different than expexted..<br />
JDeveloper thinks that DefaultDomain is not updated<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwGCQV41YScymuvCgy95UFm8Vp1yc4fqo97ZoDwnzB4GXvwgzNrXDeovbXVdsCD5UaoRkl0j_lDD-e_svtDmYwdG0JyAotC6OFHqmDLvlNJIT6hqnj0d-ugtZy_fAdA_hJIth87Zqlqxs/s1600/domainUpdatePending.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="69" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwGCQV41YScymuvCgy95UFm8Vp1yc4fqo97ZoDwnzB4GXvwgzNrXDeovbXVdsCD5UaoRkl0j_lDD-e_svtDmYwdG0JyAotC6OFHqmDLvlNJIT6hqnj0d-ugtZy_fAdA_hJIth87Zqlqxs/s320/domainUpdatePending.png" width="320" /></a></div>
<br />
<br />
This means that not all extensions are applied.. But where? where are those extensions??<br />
The extensions can be found in the following path:<br />
<br />
C:\XXXXX\system11.1.2.2.39.61.83.1\DefaultDomain\config\fmwconfig\adrs-domain-config.xml<br />
If you open that xml file you will see the following:<br />
<br />
<pre class="brush: xml"><value n="status" v="failed">
</value></pre>
<br />
This is the reason why Integrated Weblogic Server show the above error about domain updates.<br />
If you try to update the domain through JDeveloper (right click update Default Domain), it will try to add the templates, even though the script we executed previously mentioned that everything was ok. The result will still be without success.<br />
<br />
But, you can do it manually</div>
</div>
<br />
<pre class="brush: xml"><adrs -domain-config="-domain-config" xmlns="http://xmlns.oracle.com/jdeveloper/110000j2ee-adrs-domain-config">
<list n="extension-templates">
<url path="../../../../../Oracle/Middleware/home15_newer/jdeveloper/common/templates/jdeveloper/adrs_template.jar"></url>
<url path="../../../../../Oracle/Middleware/home15_newer/jdeveloper/common/templates/domains/jsf_template_1.2.9.0.jar"></url>
<url path="../../../../../Oracle/Middleware/home15_newer/oracle_common/common/templates/applications/jrf_template_11.1.1.jar"></url>
<url path="../../../../../Oracle/Middleware/home15_newer/jdeveloper/common/templates/jdeveloper/adf.fine.logging_11.1.1.jar"></url>
<url path="../../../../../Oracle/Middleware/home15_newer/jdeveloper/common/templates/jdeveloper/wsmpm_config_template.jar"></url>
<url path="../../../../../Oracle/Middleware/home15_newer/oracle_common/common/templates/applications/oracle.wsmpm_template_file_11.1.1.jar"></url>
</list>
<value n="status" v="completed">
</value></adrs>
</pre>
These are the extensions, JDeveloper should have written in the xml file. After that, you should be able to see the integrated WebLogic properly and start and stop it at will.<br />
<br />
For those of you that might get an authentication error while starting integratedWeblogicServer, the best approach I could find is to create a new Application Server Connection in JDeveloper pointing to the DefaultDomain. This will give you the flexibility to use the integrated WebLogic without having to install any additional standalone servers. JDeveloper provides a fancy UI for handling operations for integrated Weblogic.. With this workaround, we just managed to get the integrated weblogic started and working.<br />
Again, this is just a workaround and not a solution and is not promoted as such.<br />
Cheers!<br />
<br />
<br /></div>
Anonymoushttp://www.blogger.com/profile/03186199307026201300noreply@blogger.com4tag:blogger.com,1999:blog-294172151396534006.post-73277808538448029642012-09-04T13:05:00.000-07:002012-09-04T13:05:05.809-07:00ADF Business Components Extend Base Classes. Be cautious, All BC extend them. ADF BC<div dir="ltr" style="text-align: left;" trbidi="on">
Hello,<br />
<br />
<b style="background-color: #ffd966; color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;">NOTE: </b><span style="background-color: #ffd966; color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;">in this post, we are going to follow another approach of explaining things...</span><br style="background-color: white; color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;" /><span style="background-color: #ffd966; color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;">We are going to follow the first thing that it might come in mind. Then we are going to think it over and see the simplicity of things. This is an experimental way of approaching a matter and covers the case where things are not that clear in our mind regarding the best approach to follow. Sometimes I find people accepting solutions "as is" without considering to challenge them. With this approach, we are going to rethink some approaches in order to determine which is the simplest and best. <b>Make sure that you read until the end</b>. We are all busy and we want the solution fast. But, trust me, there is more into it than just accepting the solution.</span><br />
<br />
This is another quick hint regarding extending business components base classes.<br />
<br />
--wooow.. what do you mean by: <i>"extending business components base classes"</i>???<br />
<br />
Well, with JDeveloper 11g you can set which classes will be extended by your business components..<br />
<br />
--wooow.. what do you mean by<i> "you can set which classes will be extended by your business components"</i>??? (well, actually, this sentence must show a kind of mocking tone.. but I find it difficult to write it and not describe it.. )<br />
<br />
<br />
Hmm.. I see.... Every Business Component (Entity, View Object, Application Module etc...) is described by an xml file.<br />
<br />
For instance, in this example, we are going to create an ADF BC application that uses HR tables. Those tables are going to be <b>Employees</b> and <b>Departments.</b><br />
<b><br /></b>
--wooow... what do you mean by "<i><b>Employees</b> and <b>Departments</b></i> "??<br />
<br />
(I wonder... dude... where is my car??)<br />
(--Just kidding..----- Oo --->)<br />
<br />
For those of you who need a refresher about how to generate Business Components from tables, here is a <a href="http://dstas.blogspot.be/2012/03/adf-bc-getting-started-how-to-generate.html" target="_blank">refresher</a>.<br />
<br />
After we have generated the BC (do not ask me how... hit the link above.. above, not below..)<br />
<br />
-woooow........................ just kidding..<br />
<br />
Anyway, we have the ability to write some custom logic for <b>all our View Objects, the ones already generated and the ones to be generated in the not so distant future</b>, only once.<br />
<br />
(where is the wooow now ha?)<br />
<br />
-keep calm and carry on.. (I think there is a debate about that phrase, or poster.. something about copyright or something.. by the way I do not own anything of that phrase.. I do not own anything.. )<br />
--wooow...<br />
<br />
Lets say that we want to place some logging when <b>executeQueryForCollection</b> method is called <b>on every View Object in our application.</b><br />
<b><br /></b>
-- I know! I know! I know! pick me, pick me pick me!!<br />
<br />
okay... ( what the furniture aka wtf is that??)<br />
<br />
--You extend the View Object's Class and you place the Logger there.<br />
<br />
<b>hoooray</b>!! what about the rest 912783416293847162394817234912846434'1\234!@#$4#!@# View Objects??<br />
<br />
<br />
---woooow...... what do you mean by that big number with characters that reminded me of Asterix and Obelix???<br />
<br />
I mean, that there is a possibility to have more than a reasonable amount of View Objects to extend..<br />
--soo? What is the problem? Are you lazy? is that it?<br />
<br />
Yes, I do not want to keep extending and extending and going and going (like that battery advertisement), repeating the same work over and over again... I want to be <b>DRY</b><br />
<br />
---woooow.. when did you got <b>WET</b> ??<br />
<br />
.... "<b>I have to return some video tapes</b>" (which movie was it and which actor! the hidden challenge! Brought to you by dstas! The winner will get his/her name right here in this zupa fly post as the first correct answer! *No cookies involved* )<br />
<br />
Alright.. lets do it in a different way..<br />
Lets go to the Departments View Object! shall we?<br />
<br />
--okay...<br />
<br />
Do you see an java classes there?<br />
<br />
--No.. there arent any....<br />
Are you sure..<br />
--Yeeah.. unless they are hidden.. are they hidden??<br />
<br />
Yes! they are! you cannot touch this! Evil spirits and a big purple bear will hide the sunshine that goes through your morning orange juice glass and hits your spoon with which you eat your korn flakes!! No sunshine for you!!! (just kidding.. )<br />
<br />
--wooow.. So lets generated them with JDeveloper.. It is simple dude.. Just press the pencil button and then check the darn check box! then press OK!! How difficult is that!!!!?????? See the screens below please dude.. you are killing me... you are really killing me dude..<br />
<br />
oh God.. (choose whatever accent you want, but apply the "There is no salvation" tone please)<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-zTOar6jLM8Dw0nisIo_KZMJjw6WWq_GV1KivzmmKxfh8X8qZA1NtCQPKupo3ShdtuBAXuBajQbldKaQEB9A_z-R0ZAXb_BZUeE3bpZDTS_cDJ1zAOCXMyT5G7fqdPF0_r4Ni2bb1OxI/s1600/generateVOImplClass.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="219" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-zTOar6jLM8Dw0nisIo_KZMJjw6WWq_GV1KivzmmKxfh8X8qZA1NtCQPKupo3ShdtuBAXuBajQbldKaQEB9A_z-R0ZAXb_BZUeE3bpZDTS_cDJ1zAOCXMyT5G7fqdPF0_r4Ni2bb1OxI/s320/generateVOImplClass.png" width="320" /></a></div>
<br />
<br />
--There you go dude! It is ready..now apply your logger wherever you want..<br />
Okay.. I will..<br />
Oh wait a second.. what about Employees View Object? what should I do? I want to have the <b>exact same logger there</b>.. any hints?<br />
<br />
-- Dude.. why are you blogging such dump staff?? Is not it obvious?? Just perform the same process. -----Good (oh no, I wanted to say Goood not good, it is a God with many oooo in order to emphasise the anger..)<br />
<br />
Okay.. Lets pretend that I did that.. The great pretender.. Oh wait! I just got a message from the Boss via twitter (and received it more than 10 times since I am following, facebook, twitter, google+, LinkedIn and 10 other social or whatever else networks) that we have to create 300 View Objects more..<br />
<br />
--Okay.. so?<br />
....<br />
Are you expecting me to generate all those java classes, are you?<br />
--Dude, I know all hotkeys by heart (byHeart= ctrl+b+H) in JDeveloper, I can work with out a mouse, I am a Ninja duper super masta gangsta waka mama loca Bosa Nova when it comes to using JDeveloper.. I can do it in a snap!<br />
<br />
Okay.. I am not like that..<br />
--Only the brave and the fittest and those with <b>the Knowledge </b>(The Horror, The Horror) should handle such requests.<br />
<br />
good God (spelled properly)..<br />
Are You open to ideas?<br />
--From you?? ahahaha... well, lets give it a try..<br />
<br />
We could compete who is going to implement it faster, what do you say? You can throw all the ninja bomb smokes and asterisks you want.. what do you say?<br />
--ahahahahahahah there is no way you can compete me on this!! Bring it on!<br />
<br />
Here is my solution:<br />
<br />
1) Create a new class that <b>extends oracle.jbo.server.ViewObjectImpl</b>;<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVBUnJeLPnT_BW1TZsKXajLCJaY2Fisztt_e_x8R8_FJOKWjkjRin5FZN852qubj_qXJfpknQi2ei2ErWtqaope20VQIgWh_tij6CIYi6LwEPmBNbneMuWfZ0lSEdZsjnO9C9-mUum4O8/s1600/CreateJavaClass.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVBUnJeLPnT_BW1TZsKXajLCJaY2Fisztt_e_x8R8_FJOKWjkjRin5FZN852qubj_qXJfpknQi2ei2ErWtqaope20VQIgWh_tij6CIYi6LwEPmBNbneMuWfZ0lSEdZsjnO9C9-mUum4O8/s320/CreateJavaClass.png" width="262" /></a></div>
<br />
-- <i>23 classes generated so far dude... I am on fire!!</i><br />
<i><br /></i>
<i>2) </i>Override the executeQueryForCollection method and place your logger (System.out for the simplicity here in this example)<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgel2rRqM4LumfCzWStE7-NAj9ix26WWZ0X2q7nipOOw_IxfO_fPZhTw_LQj-evEf3_11jXEFu7CucCr_MkDb1zU4e9KRWrDob3b_qptJwcsI8sOi3aUPnhNFnzTcPE-rbDnhdJbSHibJ4/s1600/overrideMethod.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="97" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgel2rRqM4LumfCzWStE7-NAj9ix26WWZ0X2q7nipOOw_IxfO_fPZhTw_LQj-evEf3_11jXEFu7CucCr_MkDb1zU4e9KRWrDob3b_qptJwcsI8sOi3aUPnhNFnzTcPE-rbDnhdJbSHibJ4/s320/overrideMethod.png" width="320" /></a></div>
<br />
--<i>123 classes generated so far dude.... you are still in one class!! Not even a View Object.... I am even talking on the phone planning my next vacation dude!! That is what I call productivity with choice!!</i><br />
<i><br /></i>
<i><br /></i>
3) go to your model project and right click-> properties. Expand "ADF Business Components Node" and select <b>Base Classes</b>. Then In the View Object value change the value from ViewObjectImpl to MyViewObjectImpl<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQyZLytX9njyaAOA8N5oitLwEHNhLK5wkBicbV7gD7muGzPBchrOclhPg1IzQ2zHUcIOgkOldT9wOc1jJi7zRfJjUxhXbAJmO4Ud4yEx_lANxKdpJVddQwmT8lDNBB-QR388elU1Wre3g/s1600/ExtendBaseClasses.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="138" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQyZLytX9njyaAOA8N5oitLwEHNhLK5wkBicbV7gD7muGzPBchrOclhPg1IzQ2zHUcIOgkOldT9wOc1jJi7zRfJjUxhXbAJmO4Ud4yEx_lANxKdpJVddQwmT8lDNBB-QR388elU1Wre3g/s320/ExtendBaseClasses.png" width="320" /></a></div>
--<i>200 classes dude!!! What is that? What are you doing there?</i><br />
<br />
Actually, I am done.<br />
--What? yeah right..<br />
<br />
Really, I am done.<br />
<br />
--wooow... how did you do that? Just wait a minute... Is this applied to all View Objects???<br />
<br />
The last screen shows which classes are going to be used by default by ADF when it comes to using the View Objects. By default <b>oracle.jbo.server.ViewObjectImpl</b> is going to be used for every View Object in our application.<br />
--Aaaand how I am going to tell that a ViewObject extends my custom class properly???<br />
It is very easy. Just go to your<br />
<br />
All View Objects that do not have yet generated their java class, will use our new class.<br />
In order to verify if this already done properly (There is a strange behaviour here see note below) Check the source of the xml file:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgH-THEVevaDaw4cxIFawqJVIikRhWkyQHebNzmDui_FK7mht46cwUqrqGc32jVFjcJhD3prFhkd5qYnGOHxB9Y40us1Axdd9naqZeCGAMWNf4g84w3s8oRLudd05d1oicCBMZFlTYqScw/s1600/ComponentClass.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="120" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgH-THEVevaDaw4cxIFawqJVIikRhWkyQHebNzmDui_FK7mht46cwUqrqGc32jVFjcJhD3prFhkd5qYnGOHxB9Y40us1Axdd9naqZeCGAMWNf4g84w3s8oRLudd05d1oicCBMZFlTYqScw/s320/ComponentClass.png" width="320" /></a></div>
<br />
<b>If there is no ComponentClass in the source file, the default ViewObjectImpl java class will be used.</b><br />
<br />
========================================================================<br />
<b>NOTE</b>: It seems that there is some "strange functionality in the versions tested 11.1.1.6.0 and 11.1.2.1.0" The change is not reflected until a View Object is edited. By edited I mean to check the Classes Extend of the view object.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrtjM3HvAD6cdUqJJtB_3qlsSv6pea7_x6fZgqwnh4xXm8uIaat5GE9nftj6VW-c_vnPf_V1zYPerH-iTUY6Kh59ls6tpaJuK53U73fh_4Xl9r98_lgihVQdyML9Om0MThGwQ9I5aUaDo/s1600/actionsToDoToReflect.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="171" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrtjM3HvAD6cdUqJJtB_3qlsSv6pea7_x6fZgqwnh4xXm8uIaat5GE9nftj6VW-c_vnPf_V1zYPerH-iTUY6Kh59ls6tpaJuK53U73fh_4Xl9r98_lgihVQdyML9Om0MThGwQ9I5aUaDo/s320/actionsToDoToReflect.png" width="320" /></a></div>
<br />
You will see the custom class there, even though the ComponentClass tag is not generated in the xml source. By just doing this and the pressing ok the change will be reflected.<br />
This a strange behaviour and it does not seem that right.<br />
Another thing you can do is to manually set the ComponentClass tag to those View Objects that existed prior to extending the base classes.<br />
========================================================================<br />
<br />
All View Objects that already had their class generated, will not use it, unless we change the extension manually. All previous classes where extending the default one which was <b>oracle.jbo.server.ViewObjectImpl</b>. <br />
<br />
All View Objects that will generate their class, will extend our custom class which is MyViewObjectImpl.java<br />
<br />
--wooow.. that is smart... And what about my 200 classes? What should I do now?<br />
<br />
Well since you generated them.. you will have to manually update the extends part to the custom ViewObjectImpl class that extends the oracle.jbo.server.ViewObjectImpl class<br />
<br />
--woow... Thanks Dude.. That was really nice and fast!<br />
<br />
Yeap. One thing to remember here is that a careful design is needed when it comes to extending base classes of BC.<br />
<br />
One must always keep in mind that all BC (depending on what you extend of course) will use the Base class that you will define. So, for example, if you have a base class with abstract methods, all ViewObjects that have not generated their classes (and have properly set the ComponentClass tag in their source.), will throw an exception!!<br />
You could see something like the following:<br />
<br />
<b>(oracle.jbo.JboException) JBO-29000: Unexpected exception caught: java.lang.InstantiationException, msg=null </b><br />
<br />
Cheers!<br />
<br />
<br /></div>
Anonymoushttp://www.blogger.com/profile/03186199307026201300noreply@blogger.com5tag:blogger.com,1999:blog-294172151396534006.post-43633512171320817752012-09-02T11:40:00.000-07:002012-09-02T11:40:23.850-07:00Installing graphics libraries and desktop services componen[FAILED](See the log file /var/log/vboxadd-install-x11.log for more information.<div dir="ltr" style="text-align: left;" trbidi="on">
Hi,<br />
Just a quick note here.<br />
I was trying to install my new Guest Additions to my VirtualBox<br />
4.1.14 to 4.1.18 all of a sudden I got the following exception<br />
<br />
<b>Installing graphics libraries and desktop services componen[FAILED](See the log file /var/log/vboxadd-install-x11.log for more information.</b><br />
<br />
By all means, do not restart your machine! I did and I could not log in to my CentOS..<br />
so I had to restore my machine to a previou snapshot that worked....<br />
I tried again, and got the same error.<br />
This I searched the internet and I found this forum thread that helped my solve the problem<br />
<br />
https://forums.virtualbox.org/viewtopic.php?f=3&t=49334<br />
<br />
All I had to do is to remove the VirtualBoxGuestAdditions symlinks. <br />
The commands to be executed are the following:<br />
<b><br /></b>
<b>> rm /usr/lib64/VBoxGuestAdditions<br />> rm /usr/share/VBoxGuestAdditions</b><br />
<br />
A big thanks to the guys that found that solution!<br />
Lessons learned: <i><b>Always remove the VBoxGuestAdditions symlinks prior to installing the new VBox Guest Additions.</b></i><br />
Just to be on the safe side..<br />
<br />
cheers.</div>
Anonymoushttp://www.blogger.com/profile/03186199307026201300noreply@blogger.com0