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

Comments

  1. Great achievement ... will definitely check it

    Zeeshan

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

    ReplyDelete
  3. 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.

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

    ReplyDelete
  5. Thanks for your quick response.

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

    ReplyDelete
  7. Thank you Christophe Paoutoff for your comments.

    ReplyDelete
  8. 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

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

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

    ReplyDelete
  11. 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,

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

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

    ReplyDelete
  14. Hi,

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

    Thanks of this great book!

    ReplyDelete
  15. 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!

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

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

    ReplyDelete
  18. 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

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

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

    ReplyDelete
  21. 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,



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

    ReplyDelete
  23. Thanks for pointing it out. In fact the sample had some version issues in jws and jpr files. Corrected them manully and tested on 11.1.2.4. Please see the updated one here https://adf-samples.googlecode.com/files/ADFDevGuideCh10.zip

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

    ReplyDelete
  24. 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!!
    http://www.sqlservermasters.com/

    ReplyDelete
  25. 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,
    Christophe,

    ReplyDelete
  26. Christophe,
    This post is for you: http://www.jobinesh.com/2013/07/mds-setting-for-testing-pdef-business.html

    ReplyDelete
  27. 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 :
    https://blogs.oracle.com/groundside/entry/towards_ultra_reusability_for_adf


    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 :
    http://adfpractice-fedor.blogspot.fr/2013/02/dynamic-tree-binding-definition.html

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

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



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

    ReplyDelete
  29. thank your valuable content.we are very thankful to you.one 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

    ReplyDelete
  30. Thanks For Sharing The Information The Information Shared Is Very Valuable Please Keep Updating Us Time Just Went On Reading The article Oracle Online Course

    ReplyDelete
  31. Thank your valuable content.we are very thankful to you.one of the recommended blog.which is very useful to new learners and professionals.content is very useful for hadoop learners


    Best Spring Online Training Institute
    Best Devops Online Training Institute
    Best Datascience Online Training Institute
    Best Oracle Online Training Institute

    ReplyDelete
  32. A bewildering web journal I visit this blog, it's unfathomably heavenly. Oddly, in this present blog's substance made purpose of actuality and reasonable. The substance of data is informative
    Oracle Fusion Financials Online Training
    Oracle Fusion HCM Online Training
    Oracle Fusion SCM Online Training

    ReplyDelete
  33. A bewildering web journal I visit this blog, it's unfathomably heavenly. Oddly, in this present blog's substance made purpose of actuality and reasonable. The substance of data is informative
    Oracle Fusion Financials Online Training
    Oracle Fusion HCM Online Training
    Oracle Fusion SCM Online Training

    ReplyDelete



  34. AWS Training in Chennai AWS Training in Chennai in weekends.Learn AWS in just 5 weekends from BITA-Best Training Institute in Chennai.

    ReplyDelete

Post a Comment

Disclaimer

The views expressed on this blog are my own and do not necessarily reflect the views of my employer.