Wednesday, October 24, 2012

Oracle ADF Real World Developer’s Guide is Published!!!

I am pleased to announce the release of my book on ADF - Oracle ADF Real World Developer’s Guide. Yes, it is available in your local book stores now !

Book Details :
Paperback : 590 pages [ 235mm x 191mm ]
Release Date : October 2012
ISBN : 1849684820
ISBN 13 : 9781849684828
Author(s) : Jobinesh Purushothaman
Topics and Technologies : All Books, Enterprise, Oracle 

Oracle ADF Real World Developer’s Guide 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.

To learn more, visit http://www.packtpub.com/oracle-application-development-framework-real-world-developers-guide/book.



Book Reviews...


Contents Covered in this Book

To know the contents covered in this book, follow the packtpub link for this book and click on Table of Contents.

If you are buying this book, please make sure you read the following chapters as well (which are not included in the printed version of the book). You can access these chapter on-line 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.
Sample Chapters

To get a feel of the content, a sample chapter is made available for public. To access it click on packtpub link for this book, and select Sample Chapter tab.

If you are in India, see this link as well - Oracle ADF Real World Developer’s Guide is now available in India 

Let me know your thoughts and comments which will definitely help me to improve my next work :)

23 comments:

Zeeshan Baig said...

Great achievement ... will definitely check it

Zeeshan

vinay20 said...

Great job Jobinesh... I will check it

Deepak C Siddappa said...

Congrats Jobinesh... Great Work.

Shree. said...

I bought the eBook and it is very nicely presented. Great job on that.

For some reason I'm not able to get to the online chapters. Looks like these links are not working even after I signed into my account where I downloaded the eBook.

http://www.packtpub.com/sites/default/files/downloads/4828EN_Chapter13_Building_Business Services_with_EJB.pdf.

Jobinesh said...

The first link is broken. The rest should work. If you don't see this working please contact the publisher.
btw, I've updated publisher on the broken link(for chapter 13).

Shree said...

Thanks for your quick response.

Christophe Paoutoff said...

Thanks Jobinesh for that great book!
I'm still waiting for the ordered paper based, so in a meantime the pdf + ipad should be enough :-)

Jobinesh said...

Thank you Christophe Paoutoff for your comments.

Ranjith said...

Great work Jobinesh ..... like all your blogs, book also seems to be very much interesting .
I went through the pdf, securing ADF applications, that was really interesting...


Ranjith

Hasim said...

The content of this book shows the hard work and devotion of jobinesh that he did not missed a single important topic of this framework with lot of unknown
mysteries solved which was bewildering many developers of all levels.This is first time I am so excited to read ADF book with so much of interest even though I possess half a decade ADF , Web Center , UCM experience -
Hasim(hasamali blogspot)

Andreas Koop said...

Congrats and Big Thank You for that valuable ADF Resource. Enjoying all the deep insights into the framework especially by great diagrams!

Thanks,
Andreas Koop

cpierres said...

Jobinesh,

I was already impressed by the quality of Frank Nimphius and Lynn Munsinger's book but yours is incredible too ! (the two best on ADF in my opinion)
Congratulations for the clarity and all these valuable informations (uml diagrams and so on).
It's a great pleasure to read such excellent books.

Would you mind if I put a question about the last point of page 536 :
"You should not use transient member variables in a managed bean with a scope higher than the request, to hold UI component reference. This hard reference will prevent the UI component tree from being cleaned up."
I’m not sure to understand. Actually, I use Jheadstart especially in runtime mode ; And I noticed that, in generated application, a TableBean was by default in pageFlowScope with a transient member on RichTable. Is it a correct practice or not ?
I'm going to ask to JHeadstart team for this doubt...
Thanks you very much for this book,

Christophe,

Jobinesh said...

Thanks Christophe for your comments.
To answer the query, ideally its always recommended to use ComponentReference wrapper to hold UI component ref in managed bean. However holding UI component is less dangerous if the beans scope is request and the same is not re-used in target view(if the view transition happens during a request). Note that hard reference to UI comp will be released when the holding comp goes out of life, which may happen when you exit from a task flow. If that's the case, you may not face much issue, Still better avoid such use if you are coding from scratch.

cpierres said...

Thanks Jobinesh for your answer,

So I post a thread on JHeadstart forum :
https://forums.oracle.com/forums/thread.jspa?messageID=10688019#10688019

Steve told me that you may exchange about this subject.

Thanks you very much,

Your book help me a lot, especially about cluster application server matters !

rami said...

Hi,

The book is very good to understand and very well explained in simple terms.

Thanks of this great book!

Jobinesh said...

Thanks Rami

W!nkle4u said...

I have attended training's and watched online videos to understand the ADF internal framework, but none of them explained me in such a detail. Your book did and it looks amazing to me.

Thanks a ton!

cpierres said...

Hello Jobinesh,
I'm trying to use your samples (associated with your excellent book) in chapter 5 (add dynamically a new entity attribute and then add it to a viewObject based on this entity).

Here is an excerpt of this sample :
/**
* An example to illistrae dynamic attribute defintion
* This example adds LocationId to a Dept EO and VO
*/
public void addExtraAttributeToDept() {
//Add sttribute to entity first and if it reurn true
//add it to view object
if (addLocAttributeToDeptEntity()) {
addLocAttributeToDeptView();
}
}

but it doesn't work for me.
PDef objects seem to be ok but when I open the VO, ADF can't read the new attribute in the VO.

You haven't a concrete using of this example...
When could you call this routine ? (after findViewObject ?)

It's a very good feature and I'd like to use it :-)

Thanks you,
Christophe

Jobinesh said...

Christophe
Can you please the example given in 'Appendix' folder. Its an end to end example.

cpierres said...

Hello Jobinesh,

I confirm that I used this Appendix and the sample file "4828EN_Code" / chapter_5 (downloaded from http://www.packtpub.com/oracle-application-development-framework-real-world-developers-guide/book)
The sample I speak about is taken from your sample files.

My interest is especially about PDefEntityObject. The sample "addExtraAttribute" is not used in any client application.
The other samples about dynamically objects work fine but not the sample "addExtraAttribute".
I've read "Personalized business components" (p. 215-217) and "Appendix, More on ADF Business Components and Fusion Page Runtime".

So I try to call your "addExtraAttribute" from a findViewObject and then I created a jsf page for calling this dynamically modified viewObject (based on an existing entity dynamically modified too).
and it doesn't work.

Could you please check your own sample, precisely about "addExtraAttribute" sample ?

Unfortunately nobody speak about PDefEntityObject on JDev forum ! It's a great and powerfull subject.

Thanks you
Christophe

Jobinesh said...

Christophe,
My bad, I didn't check the sample before replying to your post. I uploaded a modified sample which uses 'addLocAttributeToDeptView' as an intermediate activity in the task flow to alter existing pDef EO and VO. https://adf-samples.googlecode.com/files/ADFDevGuideAppendixSamples.zip

I'll post some sample to dynamically modify currently displayed UI with pDef objects sometime later(look like binding container needs to be refreshed/cleared in between to make this use case to work).

cpierres said...

Thanks you very much for this modified sample.

Could I ask an other linked question (perhaps do you prefer I post it on JDev forum ?)

The ideal solution would be to make the work of modifying the structure entirely on Model project rather than viewController ; but effectively when I try to open ApplicationModule as usual from Model project, I get this error :

(oracle.jbo.ConfigException) JBO-33001: Configuration file /tester.xcfg is not found in the classpath.

with this error stack :
Apr 24, 2013 7:03:20 PM oracle.adf.share.config.ADFMDSConfig createMDSInstanceFromelement
SEVERE: MDS Configuration Exception encountered in parse ADF ConfigurationMDS-01335: namespace "/sessiondef" mapped to metadata-store-usage "mdsRepos" but its definition was not found in MDS configuration.
oracle.mds.config.MDSConfigurationException: MDS-01335: namespace "/sessiondef" mapped to metadata-store-usage "mdsRepos" but its definition was not found in MDS configuration.
at oracle.mds.config.PConfig.populateNamespaceConfigList(PConfig.java:803)
at oracle.mds.config.PConfig.loadFromBean(PConfig.java:709)
at oracle.mds.config.PConfig.(PConfig.java:496)
at oracle.mds.config.MDSConfig.loadFromBean(MDSConfig.java:706)
at oracle.mds.config.MDSConfig.loadFromElement(MDSConfig.java:768)
at oracle.mds.config.MDSConfig.(MDSConfig.java:419)
at oracle.mds.core.MDSInstance.getMDSConfigFromDocument(MDSInstance.java:2084)
at oracle.mds.core.MDSInstance.createMDSInstanceWithCustomizedConfig(MDSInstance.java:1204)
at oracle.mds.core.MDSInstance.getOrCreateInstance(MDSInstance.java:593)
at oracle.adf.share.config.ADFMDSConfig.createMDSInstanceFromelement(ADFMDSConfig.java:245)
at oracle.adf.share.config.MDSConfigFactory.createApplication(MDSConfigFactory.java:127)
at oracle.adf.share.config.ADFConfigFactory.findOrCreateADFConfig(ADFConfigFactory.java:158)
at oracle.adf.share.config.ADFConfigFactory.findOrCreateADFConfig(ADFConfigFactory.java:86)
at oracle.adf.share.config.ADFConfigFactory.findOrCreateADFConfig(ADFConfigFactory.java:64)
at oracle.adf.share.ADFContext.getADFConfigEx(ADFContext.java:963)
at oracle.adf.share.ADFContext.getADFConfig(ADFContext.java:810)
at oracle.adf.share.config.ADFContextMDSConfigHelperImpl.createMDSSession(ADFContextMDSConfigHelperImpl.java:50)
at oracle.adf.share.ADFContext.getMDSSessionAsObject(ADFContext.java:1806)
at oracle.adf.share.jndi.MDSBackingStore.getMDSSession(MDSBackingStore.java:347)
at oracle.adf.share.jndi.MDSBackingStore.isReadOnlyMDSStore(MDSBackingStore.java:167)
at oracle.adf.share.jndi.MDSBackingStore.(MDSBackingStore.java:127)
at oracle.jbo.client.Configuration.loadFromClassPath(Configuration.java:446)
at oracle.jbo.jbotester.MainFrame.loadConfiguration(MainFrame.java:637)
at oracle.jbo.jbotester.MainFrame.processArgs(MainFrame.java:612)
at oracle.jbo.jbotester.MainFrame.main(MainFrame.java:446)
Apr 24, 2013 7:03:20 PM oracle.adf.share.config.MDSConfigFactory createApplication

and so on ...


Can't we anymore use ApplicationModule tester when MDS is required ?

So I understand why you are driven to launch these methods from ViewController.


I'm very curious to see your next sample about the ability to modify entityDef directly from the page.

Thanks you very much,
Christophe

cpierres said...

Hello Jobinesh,

I try your sample and it works fine.
In your case, you dynamically build from scratch an Entity and a ViewObject on it.
Then, in a new call-method (PersDef demo), you dynamically add a new attribute in this ViewObject.

My use case is slightly different and I can't explain why it doesn't work !
I apply exactly the same recipes as you. The only difference in my case is that my entity and my VO already exist (not build from scratch).
Could I send you my simple test case ?
I look also in Metalink knowledgeBase but there are no messages on this subject.
You are my only one source of information about this subject !
Thans you,
Christophe,