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

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 :)


  1. Great achievement ... will definitely check it


  2. Great job Jobinesh... I will check it

  3. Congrats Jobinesh... Great Work.

  4. 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. Services_with_EJB.pdf.

  5. 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).

  6. Thanks for your quick response.

  7. 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 :-)

  8. Thank you Christophe Paoutoff for your comments.

  9. 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...


  10. 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)

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

    Andreas Koop

  12. 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,


  13. 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.

  14. Thanks Jobinesh for your answer,

    So I post a thread on JHeadstart forum :

    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 !

  15. Hi,

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

    Thanks of this great book!

  16. 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!

  17. 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()) {

    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,

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

  19. Hello Jobinesh,

    I confirm that I used this Appendix and the sample file "4828EN_Code" / chapter_5 (downloaded from
    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

  20. 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.

    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).

  21. 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(
    at oracle.mds.config.PConfig.loadFromBean(
    at oracle.mds.config.PConfig.(
    at oracle.mds.config.MDSConfig.loadFromBean(
    at oracle.mds.config.MDSConfig.loadFromElement(
    at oracle.mds.config.MDSConfig.(
    at oracle.mds.core.MDSInstance.getMDSConfigFromDocument(
    at oracle.mds.core.MDSInstance.createMDSInstanceWithCustomizedConfig(
    at oracle.mds.core.MDSInstance.getOrCreateInstance(
    at oracle.adf.share.config.ADFMDSConfig.createMDSInstanceFromelement(
    at oracle.adf.share.config.MDSConfigFactory.createApplication(
    at oracle.adf.share.config.ADFConfigFactory.findOrCreateADFConfig(
    at oracle.adf.share.config.ADFConfigFactory.findOrCreateADFConfig(
    at oracle.adf.share.config.ADFConfigFactory.findOrCreateADFConfig(
    at oracle.adf.share.ADFContext.getADFConfigEx(
    at oracle.adf.share.ADFContext.getADFConfig(
    at oracle.adf.share.config.ADFContextMDSConfigHelperImpl.createMDSSession(
    at oracle.adf.share.ADFContext.getMDSSessionAsObject(
    at oracle.adf.share.jndi.MDSBackingStore.getMDSSession(
    at oracle.adf.share.jndi.MDSBackingStore.isReadOnlyMDSStore(
    at oracle.adf.share.jndi.MDSBackingStore.(
    at oracle.jbo.client.Configuration.loadFromClassPath(
    at oracle.jbo.jbotester.MainFrame.loadConfiguration(
    at oracle.jbo.jbotester.MainFrame.processArgs(
    at oracle.jbo.jbotester.MainFrame.main(
    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,

  22. 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,

  23. Hi Jobinesh,

    I bought the book and started capturing the things which you explained well.

    It's very helpful for me to learn this technology.

    Could you please check the sample you provided for Chapter 10(ADFDevGuideCh10).
    The 'emp-detail-task-flow-definition' and 'emp-summary-task-flow-definition' giving error.
    Sample you provided for passing parameter in task flow through parameter map not working.

    Actually I want learn how to pass parameter through parameter map in task flow showing as a dynamic region.

    It will very helpful for me you provide me the error free sample for chapter 10(ADFDevGuideCh10 sample).

    Thanks in advance

  24. Thanks for pointing it out. In fact the sample had some version issues in jws and jpr files. Corrected them manully and tested on Please see the updated one here

    If you still face the same issue, drop me an email with exact steps to reproduce the issue

  25. Took me time to read all the comments, but I really enjoyed the article. It proved to be Very helpful to me and I am sure to all the commenters here! Its always nice when you can not only be informed, but also entertained! Im sure you had fun writing this article.
    Valuable information and excellent design you got here! I would like to thank you for sharing your thoughts and time into the stuff you post!!

  26. Thanks you very much for your answer.

    PDef API is powerful for Business components. However, as this layer is originally targeted for viewController, the big problem is that you must start viewController for testing ApplicationModule.
    This is a shame because you can't anymore use Application Module tester alone.
    Do you agree ?
    Thanks a lot,

  27. Christophe,
    This post is for you:

  28. Jobinesh,

    You are a great man (my master) ... It's working ! and you've written the solution for me ;-) thanks you so much !

    I'm very closed to the whole solution now. My goal is to allow the customization of an application by adding new fields (driven by tables) - without redeploying - gracefully to MDS.

    I have two other steps to do now :
    1/ adding corresponding bindings of the new fields dynamically (in pageDef)
    2/ adding input components with MDS (I can do this step)

    For the step 1/, I can't use the usual technique targeted to Dynamic Table as this link suggest :

    I can't use this technique because I have a normal table and normal form (not dynamic). Given that the existing jsff are built statically,
    I plan to add new fields by MDS.

    For the step 1, do you think that this technique is better for me :

    Do you think I'm on the good way and my goal is realistic ?

    Thanks you very much,
    PS : I know well India ; I spent 3x1 month for holidays in India.

  29. well appreciated keep it up, see oracle groups about the business management consultants.

  30. thank your valuable content.we are very thankful to of the recommanded blog.which is very useful to new learners and professionals.content is very useful for hadoop learners

    Best Spring Classroom Training Institute
    Best Devops Classroom Training Institute
    Best Corejava Classroom Training Institute
    Best Oracle Classroom Training Institute

  31. The information that you have shared is really useful for everyone. If someone wants to know about EHS Software and Occupational Safety Softwares I think this is the right place for you.

  32. We as a team of real-time industrial experience with a lot of knowledge in developing applications in python programming (7+ years) will ensure that we will deliver our best in python training in vijayawada. , and we believe that no one matches us in this context.

  33. We as a team of real-time industrial experience with a lot of knowledge in developing applications in python programming (7+ years) will ensure that we will deliver our best in python training in vijayawada. , and we believe that no one matches us in this context.

  34. Thanks for your valuable information..

    Tech Leads IT is the best training centre for Fusion Financials online and class room trainings. Oracle Fusion financials is one of the best Oracle Fusion course which our institute Tech Leads IT is offering. We provide training and certification help for all Fusion modules.
    For more details on Oracle Fusion training you can visit here
    For Fusion Financials demo, please click on the link

    oracle fusion financials training


  35. I'm too lazy to sign up an account just for comment your article. it's really good and helping dude. thanks!
    DevOps Training Institute in Delhi


Post a Comment