Breaking the Kubernetes Kill Chain: Host Path Mount
The Readiness of ADF Essentials for Public-facing Web Applications
1. The Readiness of ADF Essentials for
Public-facing Web Applications
Darren Matchett – Lansen Consulting
2. Agenda
• Part 1 – Choosing our tech
• Part 2 – Review of JDeveloper 12c
3. My Background
•
•
•
•
UK EFTPOS industry 8 years
Converted to Java in 2007
ADF & WebCenter since 2010
Joined Lansen Consulting 2013
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.
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. ADF Essentials – Suitability?
• Our app only impacted by: Security
• J2EE JAAS security is a valid workaround
• BUT – what about programmatic login?
21. GlassFish Highlights
• CI remote deployment easier than WebLogic
• Deploy to a cluster or single instance
• Easy to set-up security realms
22. 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
23. 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
25. 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
26. Recommendations
• Use WebLogic for local development where
possible
– (break your code if you must!)
• Re-start your local GlassFish server and
JDeveloper regularly
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 11.1.2.3 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 11.1.2.3.0 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.