The Readiness of ADF Essentials for Public-facing Web Applications


Published on

An investigation into the readiness of ADF Essentials as a low-cost, production-strength solution for a public-facing web application.

Published in: Technology, Education
1 Like
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide
  • Give definition for ‘public-facing web application’.Explain why I am giving this talk
  • Mention current EFTPOS terminals & my connectionsMention RACJoined Lansen Consulting: An Oracle Gold PartnerGroundskeeper Willie reference – voted most famous Scotsman by Americans!
  • Mention current EFTPOS terminals & my connectionsMention RACJoined Lansen Consulting: An Oracle Gold PartnerGroundskeeper Willie reference – voted most famous Scotsman by Americans!
  • Talk about Lansen Agile philosophyUser stories, showcases, daily SCRUM’s, continuous integration, unit testingADF, Mobile, WebCenter Portal & Spaces
  • Talk about what agile is NOTMention customer perception of agile meaning no documentation or disciplineIt’s more disciplined than it gets credit forEveryone on the project team wears many hats. So a developer will also act as a BA, a DBA and a tester.
  • New public-facing appNeeds to have a booking app capabilityBut also needs a publicly browsable portionOh and by the way there’s no budget!
  • So how can we make these requirements fit in with our new low-cost offerings at Lansen?OEL/GlassFish 3.1/XE/ADF Essentials & Jenkins to facilitate our agile disciplineEverything is OracleMySQL was initially considered but it was later discovered that we had some PL/SQL package dependencies
  • So what is ADF Essentials?The picture reminds me to tell you that we started out with of ADF EssentialsLet’s consider each item in turnMobile: If we want to render the pages differently we can do that using browser detection and redirectionDesktop Integration: if we need to export to Excel we can do it by hand by leveraging Lansen’s considerable Apache POI experienceSecurity: YES – potentially affects us as we need to limit some of the site to registered usersWeb Service Data Control: if we need to we could create data controls from JAVA web service POJO code in the usual wayRemote taskflows: no need to separately deploy any taskflowsBusiness Components SI: no need to separately deploy any business components eitherData Controls for BI: If we do add any analytics they would likely just be off the shelf ones from Google Analytics – nothing more complex requiredEssbase and BAM: again – we are only potentially interested in rudimentary analytics valuesHA and Clustering: this only applies at the application level – so we can still have it
  • Ultimately the only issue was with security. We do need to have it.Fortunately there is the J2EE JAAS for standard servlet authenticationThat’s fine for managing page level security but what about programmatic login?
  • Not talking about this – this is the standard IE login form which is used for standard page authentication. It is presented to the user to challenge them for credentials whenever they request a protected page or resource.That’s fine - we will probably use this same sort of functionality too – but it doesn’t cover programmatic login.
  • - This is purely just a developer-designed equivalent of the same login form. That is the servlet container presents this page to any user who tries to access a protected resource.
  • - This is what I mean. Notice the user can login if they so desire – or can just browse some of the other links.
  • This is the standard code for programmatic login with WebLogicFound all over the shop on blogs, forums and even YouTubeIt is however vendor-specificWhat’s the GlassFish equivalent?? Is there even a GlassFish equivalent??
  • Interestingly J2EE 6 has a generic login method in HttpServletRequestDoesn’t exist in J2EE 5This would be perfect for usBut how do we go about incorporating J2EE 6 into Jdeveloper which ships with J2EE 5?That sounds painful and error-prone.
  • Well Jdeveloper 12c as it turns out ships with J2EE 6 and therefore support servlets 3.0 generic login.Update GlassFish servers to use same JDKUpdate CI server to use same JDK (and version of Jdev)Make sure you re-install the correct version of Essentials on GlassFish!
  • New log windowUseful – probably!Jdev has a slightly differing startup experience depending on whether you open via the Jdev icon or via your projects .jws filegoLink, goImageLink, commandImageLink ALL REPLACED BY linkgoButton, commandButton ALL REPLACED BY button***** Jdev will attempt to auto-convert your version 11 project to version 12 – reasonably painless with a small codebase ***
  • Hints Some other stuff….
  • Lots of them!Changes in properties not always reflected in properties UI – though the code is updatedIDE runs super slow at timesSeems to have issues with bloating memory footprint (as does GlassFish)
  • This is the most dangerous and annoying of the odditiesEssentially the PageDef.xml occasionally and without warning mutates.Not easy to diagnose as the app still builds AND runsEssentially the app just behaves strangely and inexplicably on the corresponding pageThe Jdev plug-in is a tell-tale sign if you have some ending PageDef changes but are sure you haven’t edited the PageDef file.The first two times cost me around 2 days in development time.
  • Still no date coercion between user input dates and Business Component equivalents – probably wishful thinking – but then I’m spoilt!The table properties column editing section seems to grind the IDE to a near stand-still most of the timeFound myself editing the JSPX code directly which I never like doing with table columns
  • Better not steal Andrew’s material – cos he pays my wages!Remote deployments don’t require WLST scripting – just a Jenkins SSH pluginYes – we can have clustering at the server level which we have proved outJDBC realm security setup was super easy in GlassFishMeans we use local tables in the application database to handle user mgmt (as opposed to LDAP, AD, OID, OVD, OMG, whatever)Configured GlassFish to use SHA-1 to allow password HASHingCreated some db packages to handle password creation & update
  • Rolling deployments simply not possible. This is a neat WebLogic feature.Regular cleanup and restartCouldn’t deploy from Jdev to remote GlassFish – just fails every timeLots of people reported same issue but no solution was offered as yet
  • Very slow develop-> deploy cycle – painfully so most of the timeIDE freezes oftenRuns excruciatingly slowly at timesApparent memory leak – bloating memory footprint (applies to Jdev and GlassFish)GlassFish deployments regularly fail for no apparent reasonSigit reckons it’s because you deploy to quickly after saving your latest change!
  • Talk about skinning and UI tweaks and the effect on the development speed.Talk about how I broke the code on purpose just so I could test on local WebLogic.Emphasise the growing memory footprint.Talk about the habit of cleanup and fix of GlassFish down.
  • The Readiness of ADF Essentials for Public-facing Web Applications

    1. 1. The Readiness of ADF Essentials for Public-facing Web Applications Darren Matchett – Lansen Consulting
    2. 2. Agenda • Part 1 – Choosing our tech • Part 2 – Review of JDeveloper 12c
    3. 3. My Background • • • • UK EFTPOS industry 8 years Converted to Java in 2007 ADF & WebCenter since 2010 Joined Lansen Consulting 2013
    4. 4. Lansen Middleware 1. Java Application Servers 2. Unstructured Data 3. Application Development Product Specialties • Oracle ADF and ADF Mobile, • Oracle WebCenter Portal, • Jenkins, Subversion, LoadUI, Ant and Groovy, • Oracle BPM. __________________________________________________________________ At Lansen we have embraced the Agile development methodology, with regular user sessions and development showcases to the business. We also encourage and champion the case for enhanced developer discipline, promoting features such as a continuous build process and a regular “code check-in” process for developers.
    5. 5. Agile Methodology
    6. 6. Problem Statement • New public-facing web application required • Must have a booking app capability • Must allow registered user access
    7. 7. Low Licence Cost Solutions
    8. 8. ADF Essentials – What’s Missing? • • • • • • • • • Mobile Desktop Integration Security Web Service Data Control Remote taskflows Business Component’s Service Interfaces Data Controls for BI Essbase and BAM MDS, OPSS, OWSM, EM, MBeans, HA and Clustering
    9. 9. ADF Essentials – Suitability? • Our app only impacted by: Security • J2EE JAAS security is a valid workaround • BUT – what about programmatic login?
    10. 10. Not this…
    11. 11. Nor this…
    12. 12. But like this.
    13. 13. If only we could use Java EE6…
    14. 14. Enter JDeveloper 12c • • • • • Released July 2013 ADF 12.1.2 Supports Java EE 6 Servlets 3.0 API compliant Supports GlassFish 3.1
    15. 15. JDeveloper 12c: What’s new? • This window when you open via icon:
    16. 16. JDeveloper 12c: What’s new? • Open via icon: • Open via project .jws file:
    17. 17. JDeveloper 12c: Oddities
    18. 18. JDeveloper 12c: Mangled PageDef!
    19. 19. JDeveloper 12c: Niggles • No auto date coercion between different date formats • Table properties:
    20. 20. GlassFish Highlights • CI remote deployment easier than WebLogic • Deploy to a cluster or single instance • Easy to set-up security realms
    21. 21. GlassFish Lowlights • No side-by-side/rolling deployments • Server needs regular maintenance – Clean-up and re-start every X re-deploys • Known issue deploying from JDev to remote GlassFish servers
    22. 22. JDeveloper 12c: GlassFish Performance • • • • Develop->deploy cycle extremely slow IDE freezes occasionally for no obvious reason Memory leakage – frequently need to restart Local GlassFish deployments regularly fail
    23. 23. JDeveloper 12c: GlassFish Deployment
    24. 24. JDeveloper 12c: GlassFish Debugging • Remote debugging works just as well as WebLogic • Hot JVM deploy works a treat while remote debugging • Changes to .jspx and .jsff however NOT automatically re-deployed
    25. 25. Recommendations • Use WebLogic for local development where possible – (break your code if you must!) • Re-start your local GlassFish server and JDeveloper regularly
    26. 26. Questions