SlideShare une entreprise Scribd logo
1  sur  59
The Eureka Moment:
XPages Under The Covers

        Paul Withers
   Intec Systems Limited
Agenda
Introduction
XPages Server Processing
JVM and the NSF
Memory Management
JSF Event Model – Lifecycle
JSF Event Model – Performance
Rendered / Language Performance
About Me
Senior Domino Developer, Intec Systems Ltd
XPages Developer since 8.5.0
IBM Champion
Co-Host of The XCast
Co-Author of XPages Extension Library book
Why This Session?
Nothing in life is to be feared, it is only to be understood. Now
  is the time to understand more, so that we may fear less.
                                                        Marie Curie
A matter that becomes clear ceases to concern us.
                                              Friedrich Nietzsche
Furious activity is no substitute for understanding.
                                                    H.H. Williams
No. I am your father.                                  Darth Vader
Why This Session?
XPages vs Domino HTTP
Language Performance
  Language Roadmap and Justification
Persistence options
  Which setting for which application
JSF Lifecycle – understand page processing
Partial refresh – beyond event defaults
Expectations
You should:
  Know what XPages are
  Know that XPages runs on a Domino Server
  Know the Computed Field, Edit Box, Repeat controls
You don't:
  Have a thorough understanding of JSF
  Have expert knowledge of dataContexts, managed
   beans, PhaseListeners and VariableResolvers
To Download Sample App
Source code at
 http://projects.qtzar.com/projects/jsf_eureka
Source control with Git
Download and install eGit from OpenNTF
Create new project from source code
  http://git.qtzar.com/jsf_eureka.git/
Associate with new NSF
Agenda
Introduction
XPages Server Processing
JVM and the NSF
Memory Management
JSF Event Model – Lifecycle
JSF Event Model – Performance
Rendered / Language Performance
Server Architecture




  Java Virtual Machine

 XSP Command Manager

  Domino HTTP Server
So When an XPage Is Served...
Can HTTP Server resolve the URL?
  HTTP 404 Error
Does user have access to NSF?
  HTTP Authentication Page
Can HTTP Server find resource in the NSF?
  HTTP 404 Error
So When an XPage Is Served...
Does the signer have access to run XPages?
  HTTP 403 Error
Are there SSJS errors?
  XSP Command Manager takes over
  HTTP 500 error*
Return XPage
*HTTP Error 500 Reasons
No server / custom error page defined
Missing Extension Library or other library on
 server
java.lang.NoClassDefFoundError
java.lang.securityException
  Check <domino>dataIBM_TECHNICAL_
  SUPPORTxpages_exc_ServerName_yyyy_
          MM_dd@hh_mm_ss.log
XPiNC
Server-based NSFs need a local XSP
Command Manager etc.
Authentication via Notes logon on local PC
Signer access granted via ECL on local PC
XPages Extensions, Java packages must be
deployed locally
Logging accessible from Help → Support →
View Log on local PC
Agenda
Introduction
XPages Server Processing
JVM and the NSF
Memory Management
JSF Event Model – Lifecycle
JSF Event Model – Performance
Rendered / Language Performance
Java Virtual Machine Means...
Each NSF is a separate Java application
sessionScope is per NSF
  Browser session, NOT user session
  Setting sessionScope in Db1.nsf does NOT set
   sessionScope in Db2.nsf
sessionScope is ONLY within JVM – not
  cleared by HTTP logout
DEMO
JAVA Virtual Machine
XPages → Java classes → Java bytecode
Each control is a Java class
Extensions are pre-packaged Java classes
 Define properties (what can be customised)
 Define renderers (what is printed)
SSJS code is String passed to Java method
Java code prints HTML to browser
XPages Control Languages
Literal values
  Strings, booleans etc
Expression Language
  #{document1.FirstName}
SSJS
  #{javascript:document1.getItemValueString(“FirstName”)}
Custom
  All of the above
Hypotheses
How will fewer controls improve performance?
How will different languages affect
  performance?
What is the comparison of standard Dojo vs
  Extension Library perform?
DEMO
Performance of Languages
The fewer controls the better
= less Java code to be run
Reason for Extension Library controls
  Less Java code in XPages / Custom Controls
  Some controls lazy loaded
Combining languages is good
EL is quicker than SSJS
Agenda
Introduction
XPages Server Processing
JVM and the NSF
Memory Management
JSF Event Model – Lifecycle
JSF Event Model – Performance
Rendered / Language Performance
JSF and Serialization
HTTP is state-less
JSF keeps state-full server representation of
 UI (component tree or view)
Objects stored in component tree must be
 serializable (persist between requests)
  Domino objects recycled after each request
  Datasources are recycle-safe
Persistence Tab
Persistence options
Component tree (map of XPage on server)
 either held in memory of JVM
 or serialized to disk
xsp.persistence.XXX properties
See persistence tab of new xsp.properties
editor
Package Explorer → WebContentWEB-
INFxsp.properties
Demo
Persistence Summary
Keep Pages in Memory
  Remembering, remembering, remembering
Keep Pages on Disk
  Writing...next? You want it again? Reading
Keep Only The Current Page In Memory
  Remembering, remembering, remembering
  Oh, new page? Writing...and now
     Remembering, remembering, remembering
Persistence Summary
Gzip Persisted Files
  Writing   ...next? You want it again? Reading
Persist Files Asynchronously
  Server busy, remembering. Next? (Writing, writing)
Maximum Pages...
  Remembering, remembering, remembering
  Writing, retrieving, writing, writing
General Tab
General options
Settings available in xsp.properties editor
Application & Session timeouts
  XSP Command Manager within HTTP server
  Session timeout overridden by HTTP session
   timeout
xsp.session.transient=“false”
  XPage becomes stateless
     Default VALUES overridden between requests
     Default STATES not overridden
Demo
xsp.session.transient
State not persisted
  NOT “Go to next page” from current
  INSTEAD “Go to next page” from default
  NOT “Toggle show detail” from previous state
  INSTEAD “Toggle show detail” from default
Values persisted
Great for large, read-only pages – no storage
Need to build your own “relative” functionality
Agenda
Introduction
XPages Server Processing
JVM and the NSF
Memory Management
JSF Event Model – Lifecycle
JSF Event Model – Performance
Rendered / Language Performance
JSF LifeCycle
Six Phases
Restore View
  JSF component tree retrieved
Apply Request Values
  this.setSubmittedValue(passedValue) run
  Any event logic run if immediate=“true”
Process Validation
  Any converters applied
  Any validators applied
Six Phases Continued
Update Model Values
  this.setValue(this.getSubmittedValue());
  this.setSubmittedValue(null)
Invoke Application
  Any event logic run
Render Response
  HTML rendered and state saved
  Only event that runs during page load
AbstractPhaseListener
Abstract because it can't be instantiated
Implements javax.faces.event.PhaseListener
Allows us to track JSF lifecycle phases
Java class plus reference in faces-config
DEMO
Basic Processing
Validation fails
 beforeRestoreView
 afterRestoreView
 beforeApplyRequestValues
 afterApplyRequestValues
 beforeProcessValidations
 beforeRenderResponse
 afterRenderResponse
Event logic not run
No Validation
Conversion still honoured
 If failed, skips from ProcessValidations to RenderResponse
 Event Logic not run
If no conversion errors, all phases run
Values passed from submittedValue to value
Component tree updated
immediate=“true”
Validation fails
 beforeRestoreView
 afterRestoreView
 beforeApplyRequestValues
 afterApplyRequestValues
 beforeRenderResponse
 afterRenderResponse
Event logic run in ApplyRequestValues phase
Component value never goes past submittedValue
Component tree not updated
DIY SSJS Validators
Runs AFTER Apply Request Values
Runs BEFORE Update Model Values
  submittedValue property set
  value property still NULL (or last stored value)
Use validator property of control
Check getSubmittedValue()
Post error with facesContext.addMessage()
Abort with this.setValid(false)
DIY Validator
Runs at same time as any other validator
Use xp:validator child of validators property of
 control
validatorId property maps to validator-id in
  faces-config.xml
validator-class maps to Java class
DIY Validator – Java Class
Use Java class implementing Validator
  javax.faces.validator.Validator
validate(FacesContext,UIComponent,Object)
  method performs validation, returns void
Post error using throw ValidatorException
Third argument is submittedValue – String
ValidatorException takes FacesMessage
  javax.faces.application.FacesMessage
Agenda
Introduction
XPages Server Processing
JVM and the NSF
Memory Management
JSF Event Model – Lifecycle
JSF Event Model – Performance
Rendered / Language Performance
Performance Smackdown
Compute on Page Load (Loaded)
Compute Dynamically (Runtime)
Theme
dataContexts
  “Global variables”
  Scoped to XPage, Custom Control, Panel
  Referenced via EL – #{var1}
Performance Smackdown
Page Load – how many calls
Partial Refresh – how many calls
execMode=“partial”
  Runs over only part of component tree
DEMO
Smackdown Results
Loaded makes fewer calls
Theme cannot override loaded
Runtime and theme makes same calls
dataContext makes fewer calls
execMode=“partial” improves performance
 IMPORTANT: Define id to execute lifecycle on
  EventHandler – All Properties
Agenda
Introduction
XPages Server Processing
JVM and the NSF
Memory Management
JSF Event Model – Lifecycle
JSF Event Model – Performance
Rendered / Language Performance
Bonus – Repeats Revisited
See Bonus – Java Performance + Rendered
  rendered property set for each of 50000 rows
SSJS in Script Library performs worst
SL much worse on partial refresh
VariableResolver best for performance
  Deprecated in JSF 2.0 for ELResolver
DataContext next best (rendered property), but
 only reusable within page
Summary
Scoped variables not cleared by ?logout
Combining controls improves performance
Persistence options can optimise application
JSF lifecycle affects event processing
Loaded and dataContexts offer benefits
execMode improves performance
Summary
Script libraries work for application reusability
dataContexts better for page reusability
VariableResolver best for application-level
reusability
Upgrade VariableResolver to ELResolver when
XPages updated to JSF 2.0
Use AbstractPhaseListener to test
Combining Controls Results
Language Lifecycle Results
Code Location Results
To Download Sample App
Source code at
 http://projects.qtzar.com/projects/jsf_eureka
Source control with Git
Download and install eGit from OpenNTF
Create new project from source code
Associate with new NSF
Evals, Questions & Contact Details
Paul Withers
email: pwithers@intec.co.uk
twitter: @PaulSWithers
skype: PaulSWithers
blog: http://www.intec.co.uk/blog
YouTube channel: http://www.youtube.com/intecsystems
website: http://www.intec.co.uk

Contenu connexe

Tendances

Manage your environment with DSC
Manage your environment with DSCManage your environment with DSC
Manage your environment with DSCGian Maria Ricci
 
Introducing CrossWorlds for IBM Domino
Introducing CrossWorlds for IBM DominoIntroducing CrossWorlds for IBM Domino
Introducing CrossWorlds for IBM DominoDaniele Vistalli
 
High Availability Perl DBI + MySQL
High Availability Perl DBI + MySQLHigh Availability Perl DBI + MySQL
High Availability Perl DBI + MySQLSteve Purkis
 
Fun with EJB 3.1 and Open EJB
Fun with EJB 3.1 and Open EJBFun with EJB 3.1 and Open EJB
Fun with EJB 3.1 and Open EJBArun Gupta
 
Life In The FastLane: Full Speed XPages
Life In The FastLane: Full Speed XPagesLife In The FastLane: Full Speed XPages
Life In The FastLane: Full Speed XPagesUlrich Krause
 
Life in the fast lane. Full speed XPages
Life in the fast lane. Full speed XPagesLife in the fast lane. Full speed XPages
Life in the fast lane. Full speed XPagesUlrich Krause
 
My first powershell script
My first powershell scriptMy first powershell script
My first powershell scriptDavid Cobb
 
Preparing for java 9 modules upload
Preparing for java 9 modules uploadPreparing for java 9 modules upload
Preparing for java 9 modules uploadRyan Cuprak
 
Bccon use notes objects in memory and other useful
Bccon   use notes objects in memory and other usefulBccon   use notes objects in memory and other useful
Bccon use notes objects in memory and other usefulFrank van der Linden
 
Java EE and Google App Engine
Java EE and Google App EngineJava EE and Google App Engine
Java EE and Google App EngineArun Gupta
 
VMware Automation, PowerCLI presented at the Northern California PSUG
VMware Automation, PowerCLI presented at the Northern California PSUGVMware Automation, PowerCLI presented at the Northern California PSUG
VMware Automation, PowerCLI presented at the Northern California PSUGAlan Renouf
 
OSGi Community Event 2010 - OSGi and Android
OSGi Community Event 2010 - OSGi and AndroidOSGi Community Event 2010 - OSGi and Android
OSGi Community Event 2010 - OSGi and Androidmfrancis
 
An XPager's Guide to Process Server-Side Jobs on Domino
An XPager's Guide to Process Server-Side Jobs on DominoAn XPager's Guide to Process Server-Side Jobs on Domino
An XPager's Guide to Process Server-Side Jobs on DominoFrank van der Linden
 
Dutch VMUG 2010 PowerCLI Presentation
Dutch VMUG 2010 PowerCLI PresentationDutch VMUG 2010 PowerCLI Presentation
Dutch VMUG 2010 PowerCLI PresentationAlan Renouf
 
Writing Stored Procedures in Oracle RDBMS
Writing Stored Procedures in Oracle RDBMSWriting Stored Procedures in Oracle RDBMS
Writing Stored Procedures in Oracle RDBMSMartin Toshev
 
Java EE 7, what's in it for me?
Java EE 7, what's in it for me?Java EE 7, what's in it for me?
Java EE 7, what's in it for me?Alex Soto
 
미들웨어 엔지니어의 클라우드 탐방기
미들웨어 엔지니어의 클라우드 탐방기미들웨어 엔지니어의 클라우드 탐방기
미들웨어 엔지니어의 클라우드 탐방기jbugkorea
 
From Tomcat to Java EE, making the transition with TomEE
From Tomcat to Java EE, making the transition with TomEEFrom Tomcat to Java EE, making the transition with TomEE
From Tomcat to Java EE, making the transition with TomEEjaxconf
 
How to grow your own Microservice?
How to grow your own Microservice?How to grow your own Microservice?
How to grow your own Microservice?Dmitry Buzdin
 

Tendances (20)

Manage your environment with DSC
Manage your environment with DSCManage your environment with DSC
Manage your environment with DSC
 
Introducing CrossWorlds for IBM Domino
Introducing CrossWorlds for IBM DominoIntroducing CrossWorlds for IBM Domino
Introducing CrossWorlds for IBM Domino
 
High Availability Perl DBI + MySQL
High Availability Perl DBI + MySQLHigh Availability Perl DBI + MySQL
High Availability Perl DBI + MySQL
 
Fun with EJB 3.1 and Open EJB
Fun with EJB 3.1 and Open EJBFun with EJB 3.1 and Open EJB
Fun with EJB 3.1 and Open EJB
 
Life In The FastLane: Full Speed XPages
Life In The FastLane: Full Speed XPagesLife In The FastLane: Full Speed XPages
Life In The FastLane: Full Speed XPages
 
Life in the fast lane. Full speed XPages
Life in the fast lane. Full speed XPagesLife in the fast lane. Full speed XPages
Life in the fast lane. Full speed XPages
 
My first powershell script
My first powershell scriptMy first powershell script
My first powershell script
 
Preparing for java 9 modules upload
Preparing for java 9 modules uploadPreparing for java 9 modules upload
Preparing for java 9 modules upload
 
Bccon use notes objects in memory and other useful
Bccon   use notes objects in memory and other usefulBccon   use notes objects in memory and other useful
Bccon use notes objects in memory and other useful
 
Java EE and Google App Engine
Java EE and Google App EngineJava EE and Google App Engine
Java EE and Google App Engine
 
VMware Automation, PowerCLI presented at the Northern California PSUG
VMware Automation, PowerCLI presented at the Northern California PSUGVMware Automation, PowerCLI presented at the Northern California PSUG
VMware Automation, PowerCLI presented at the Northern California PSUG
 
OSGi Community Event 2010 - OSGi and Android
OSGi Community Event 2010 - OSGi and AndroidOSGi Community Event 2010 - OSGi and Android
OSGi Community Event 2010 - OSGi and Android
 
An XPager's Guide to Process Server-Side Jobs on Domino
An XPager's Guide to Process Server-Side Jobs on DominoAn XPager's Guide to Process Server-Side Jobs on Domino
An XPager's Guide to Process Server-Side Jobs on Domino
 
Let's server your Data
Let's server your DataLet's server your Data
Let's server your Data
 
Dutch VMUG 2010 PowerCLI Presentation
Dutch VMUG 2010 PowerCLI PresentationDutch VMUG 2010 PowerCLI Presentation
Dutch VMUG 2010 PowerCLI Presentation
 
Writing Stored Procedures in Oracle RDBMS
Writing Stored Procedures in Oracle RDBMSWriting Stored Procedures in Oracle RDBMS
Writing Stored Procedures in Oracle RDBMS
 
Java EE 7, what's in it for me?
Java EE 7, what's in it for me?Java EE 7, what's in it for me?
Java EE 7, what's in it for me?
 
미들웨어 엔지니어의 클라우드 탐방기
미들웨어 엔지니어의 클라우드 탐방기미들웨어 엔지니어의 클라우드 탐방기
미들웨어 엔지니어의 클라우드 탐방기
 
From Tomcat to Java EE, making the transition with TomEE
From Tomcat to Java EE, making the transition with TomEEFrom Tomcat to Java EE, making the transition with TomEE
From Tomcat to Java EE, making the transition with TomEE
 
How to grow your own Microservice?
How to grow your own Microservice?How to grow your own Microservice?
How to grow your own Microservice?
 

En vedette

Deployment guide series tivoli continuous data protection for files v3.1 sg24...
Deployment guide series tivoli continuous data protection for files v3.1 sg24...Deployment guide series tivoli continuous data protection for files v3.1 sg24...
Deployment guide series tivoli continuous data protection for files v3.1 sg24...Banking at Ho Chi Minh city
 
Ibm tivoli storage manager mail extension jan 2002
Ibm tivoli storage manager mail extension jan   2002Ibm tivoli storage manager mail extension jan   2002
Ibm tivoli storage manager mail extension jan 2002Banking at Ho Chi Minh city
 
Ibm tivoli storage resource manager a practical introduction sg246886
Ibm tivoli storage resource manager a practical introduction sg246886Ibm tivoli storage resource manager a practical introduction sg246886
Ibm tivoli storage resource manager a practical introduction sg246886Banking at Ho Chi Minh city
 
5 maneras de gastar menos en tus mudanzas
5 maneras de gastar menos en tus mudanzas5 maneras de gastar menos en tus mudanzas
5 maneras de gastar menos en tus mudanzasMudanzaEconomica EIRL
 
Embracing the power of the notes client
Embracing the power of the notes clientEmbracing the power of the notes client
Embracing the power of the notes clientPaul Withers
 
Ibm tivoli storage manager mail extension jan 2002
Ibm tivoli storage manager mail extension jan   2002Ibm tivoli storage manager mail extension jan   2002
Ibm tivoli storage manager mail extension jan 2002Banking at Ho Chi Minh city
 
IBM Connect 2014 BP204: It's Not Infernal: Dante's Nine Circles of XPages Heaven
IBM Connect 2014 BP204: It's Not Infernal: Dante's Nine Circles of XPages HeavenIBM Connect 2014 BP204: It's Not Infernal: Dante's Nine Circles of XPages Heaven
IBM Connect 2014 BP204: It's Not Infernal: Dante's Nine Circles of XPages HeavenPaul Withers
 
Xpages–viewicons
Xpages–viewiconsXpages–viewicons
Xpages–viewiconsdominion
 
Demo Slides: Application Release Automation with Deployit
Demo Slides: Application Release Automation with DeployitDemo Slides: Application Release Automation with Deployit
Demo Slides: Application Release Automation with DeployitXebiaLabs
 
ICON UK 2015 - ODA and CrossWorlds
ICON UK 2015 - ODA and CrossWorldsICON UK 2015 - ODA and CrossWorlds
ICON UK 2015 - ODA and CrossWorldsPaul Withers
 
Dd13.2013.milano.open ntf
Dd13.2013.milano.open ntfDd13.2013.milano.open ntf
Dd13.2013.milano.open ntfUlrich Krause
 
Bootstrap4XPages webinar
Bootstrap4XPages webinarBootstrap4XPages webinar
Bootstrap4XPages webinarMark Leusink
 
AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XP...
AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XP...AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XP...
AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XP...Paul Withers
 
JMP401: Masterclass: XPages Scalability
JMP401: Masterclass: XPages ScalabilityJMP401: Masterclass: XPages Scalability
JMP401: Masterclass: XPages ScalabilityTony McGuckin
 

En vedette (14)

Deployment guide series tivoli continuous data protection for files v3.1 sg24...
Deployment guide series tivoli continuous data protection for files v3.1 sg24...Deployment guide series tivoli continuous data protection for files v3.1 sg24...
Deployment guide series tivoli continuous data protection for files v3.1 sg24...
 
Ibm tivoli storage manager mail extension jan 2002
Ibm tivoli storage manager mail extension jan   2002Ibm tivoli storage manager mail extension jan   2002
Ibm tivoli storage manager mail extension jan 2002
 
Ibm tivoli storage resource manager a practical introduction sg246886
Ibm tivoli storage resource manager a practical introduction sg246886Ibm tivoli storage resource manager a practical introduction sg246886
Ibm tivoli storage resource manager a practical introduction sg246886
 
5 maneras de gastar menos en tus mudanzas
5 maneras de gastar menos en tus mudanzas5 maneras de gastar menos en tus mudanzas
5 maneras de gastar menos en tus mudanzas
 
Embracing the power of the notes client
Embracing the power of the notes clientEmbracing the power of the notes client
Embracing the power of the notes client
 
Ibm tivoli storage manager mail extension jan 2002
Ibm tivoli storage manager mail extension jan   2002Ibm tivoli storage manager mail extension jan   2002
Ibm tivoli storage manager mail extension jan 2002
 
IBM Connect 2014 BP204: It's Not Infernal: Dante's Nine Circles of XPages Heaven
IBM Connect 2014 BP204: It's Not Infernal: Dante's Nine Circles of XPages HeavenIBM Connect 2014 BP204: It's Not Infernal: Dante's Nine Circles of XPages Heaven
IBM Connect 2014 BP204: It's Not Infernal: Dante's Nine Circles of XPages Heaven
 
Xpages–viewicons
Xpages–viewiconsXpages–viewicons
Xpages–viewicons
 
Demo Slides: Application Release Automation with Deployit
Demo Slides: Application Release Automation with DeployitDemo Slides: Application Release Automation with Deployit
Demo Slides: Application Release Automation with Deployit
 
ICON UK 2015 - ODA and CrossWorlds
ICON UK 2015 - ODA and CrossWorldsICON UK 2015 - ODA and CrossWorlds
ICON UK 2015 - ODA and CrossWorlds
 
Dd13.2013.milano.open ntf
Dd13.2013.milano.open ntfDd13.2013.milano.open ntf
Dd13.2013.milano.open ntf
 
Bootstrap4XPages webinar
Bootstrap4XPages webinarBootstrap4XPages webinar
Bootstrap4XPages webinar
 
AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XP...
AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XP...AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XP...
AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XP...
 
JMP401: Masterclass: XPages Scalability
JMP401: Masterclass: XPages ScalabilityJMP401: Masterclass: XPages Scalability
JMP401: Masterclass: XPages Scalability
 

Similaire à Eureka moment

IBM ConnectED 2015 - MAS103 XPages Performance and Scalability
IBM ConnectED 2015 - MAS103 XPages Performance and ScalabilityIBM ConnectED 2015 - MAS103 XPages Performance and Scalability
IBM ConnectED 2015 - MAS103 XPages Performance and ScalabilityPaul Withers
 
Monitoring and Tuning GlassFish
Monitoring and Tuning GlassFishMonitoring and Tuning GlassFish
Monitoring and Tuning GlassFishC2B2 Consulting
 
Monitoring And Tuning Glass Fish In The Wild Community One 2009
Monitoring And Tuning Glass Fish In The Wild   Community One 2009Monitoring And Tuning Glass Fish In The Wild   Community One 2009
Monitoring And Tuning Glass Fish In The Wild Community One 2009SteveMillidge
 
CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...
CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...
CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...Jesse Gallagher
 
Oscon2007 Windmill
Oscon2007 WindmillOscon2007 Windmill
Oscon2007 Windmilloscon2007
 
Meetup Performance
Meetup PerformanceMeetup Performance
Meetup PerformanceGreg Whalin
 
Quest to the best test automation for low code development platform kherrazi ...
Quest to the best test automation for low code development platform kherrazi ...Quest to the best test automation for low code development platform kherrazi ...
Quest to the best test automation for low code development platform kherrazi ...Rachid Kherrazi
 
Web Sphere Problem Determination Ext
Web Sphere Problem Determination ExtWeb Sphere Problem Determination Ext
Web Sphere Problem Determination ExtRohit Kelapure
 
Copper: A high performance workflow engine
Copper: A high performance workflow engineCopper: A high performance workflow engine
Copper: A high performance workflow enginedmoebius
 
An Introduction to Websphere sMash for PHP Programmers
An Introduction to Websphere sMash for PHP ProgrammersAn Introduction to Websphere sMash for PHP Programmers
An Introduction to Websphere sMash for PHP Programmersjphl
 
Teaching old java script new tricks
Teaching old java script new tricksTeaching old java script new tricks
Teaching old java script new tricksSimon Sturmer
 
540slidesofnodejsbackendhopeitworkforu.pdf
540slidesofnodejsbackendhopeitworkforu.pdf540slidesofnodejsbackendhopeitworkforu.pdf
540slidesofnodejsbackendhopeitworkforu.pdfhamzadamani7
 

Similaire à Eureka moment (20)

IBM ConnectED 2015 - MAS103 XPages Performance and Scalability
IBM ConnectED 2015 - MAS103 XPages Performance and ScalabilityIBM ConnectED 2015 - MAS103 XPages Performance and Scalability
IBM ConnectED 2015 - MAS103 XPages Performance and Scalability
 
JSF 2.0 Preview
JSF 2.0 PreviewJSF 2.0 Preview
JSF 2.0 Preview
 
XPages Performance
XPages PerformanceXPages Performance
XPages Performance
 
Monitoring and Tuning GlassFish
Monitoring and Tuning GlassFishMonitoring and Tuning GlassFish
Monitoring and Tuning GlassFish
 
Monitoring And Tuning Glass Fish In The Wild Community One 2009
Monitoring And Tuning Glass Fish In The Wild   Community One 2009Monitoring And Tuning Glass Fish In The Wild   Community One 2009
Monitoring And Tuning Glass Fish In The Wild Community One 2009
 
Node.js vs Play Framework
Node.js vs Play FrameworkNode.js vs Play Framework
Node.js vs Play Framework
 
CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...
CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...
CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...
 
Panama.pdf
Panama.pdfPanama.pdf
Panama.pdf
 
Oscon2007 Windmill
Oscon2007 WindmillOscon2007 Windmill
Oscon2007 Windmill
 
Meetup Performance
Meetup PerformanceMeetup Performance
Meetup Performance
 
Meetup Performance
Meetup PerformanceMeetup Performance
Meetup Performance
 
Quest to the best test automation for low code development platform kherrazi ...
Quest to the best test automation for low code development platform kherrazi ...Quest to the best test automation for low code development platform kherrazi ...
Quest to the best test automation for low code development platform kherrazi ...
 
Jsp Comparison
 Jsp Comparison Jsp Comparison
Jsp Comparison
 
Java server face tutorial
Java server face tutorialJava server face tutorial
Java server face tutorial
 
Web Sphere Problem Determination Ext
Web Sphere Problem Determination ExtWeb Sphere Problem Determination Ext
Web Sphere Problem Determination Ext
 
Copper: A high performance workflow engine
Copper: A high performance workflow engineCopper: A high performance workflow engine
Copper: A high performance workflow engine
 
An Introduction to Websphere sMash for PHP Programmers
An Introduction to Websphere sMash for PHP ProgrammersAn Introduction to Websphere sMash for PHP Programmers
An Introduction to Websphere sMash for PHP Programmers
 
Resthub
ResthubResthub
Resthub
 
Teaching old java script new tricks
Teaching old java script new tricksTeaching old java script new tricks
Teaching old java script new tricks
 
540slidesofnodejsbackendhopeitworkforu.pdf
540slidesofnodejsbackendhopeitworkforu.pdf540slidesofnodejsbackendhopeitworkforu.pdf
540slidesofnodejsbackendhopeitworkforu.pdf
 

Plus de Paul Withers

Engage 2019: Introduction to Node-Red
Engage 2019: Introduction to Node-RedEngage 2019: Introduction to Node-Red
Engage 2019: Introduction to Node-RedPaul Withers
 
Engage 2019: Modernising Your Domino and XPages Applications
Engage 2019: Modernising Your Domino and XPages Applications Engage 2019: Modernising Your Domino and XPages Applications
Engage 2019: Modernising Your Domino and XPages Applications Paul Withers
 
Engage 2019: AI What Is It Good For
Engage 2019: AI What Is It Good ForEngage 2019: AI What Is It Good For
Engage 2019: AI What Is It Good ForPaul Withers
 
Social Connections 14 - ICS Integration with Node-RED and Open Source
Social Connections 14 - ICS Integration with Node-RED and Open SourceSocial Connections 14 - ICS Integration with Node-RED and Open Source
Social Connections 14 - ICS Integration with Node-RED and Open SourcePaul Withers
 
ICONUK 2018 - Do You Wanna Build a Chatbot
ICONUK 2018 - Do You Wanna Build a ChatbotICONUK 2018 - Do You Wanna Build a Chatbot
ICONUK 2018 - Do You Wanna Build a ChatbotPaul Withers
 
IBM Think Session 8598 Domino and JavaScript Development MasterClass
IBM Think Session 8598 Domino and JavaScript Development MasterClassIBM Think Session 8598 Domino and JavaScript Development MasterClass
IBM Think Session 8598 Domino and JavaScript Development MasterClassPaul Withers
 
IBM Think Session 3249 Watson Work Services Java SDK
IBM Think Session 3249 Watson Work Services Java SDKIBM Think Session 3249 Watson Work Services Java SDK
IBM Think Session 3249 Watson Work Services Java SDKPaul Withers
 
OpenNTF Domino API (ODA): Super-Charging Domino Development
OpenNTF Domino API (ODA): Super-Charging Domino DevelopmentOpenNTF Domino API (ODA): Super-Charging Domino Development
OpenNTF Domino API (ODA): Super-Charging Domino DevelopmentPaul Withers
 
OpenNTF Domino API - Overview Introduction
OpenNTF Domino API - Overview IntroductionOpenNTF Domino API - Overview Introduction
OpenNTF Domino API - Overview IntroductionPaul Withers
 
What's New and Next in OpenNTF Domino API (ICON UK 2014)
What's New and Next in OpenNTF Domino API (ICON UK 2014)What's New and Next in OpenNTF Domino API (ICON UK 2014)
What's New and Next in OpenNTF Domino API (ICON UK 2014)Paul Withers
 
From XPages Hero to OSGi Guru: Taking the Scary out of Building Extension Lib...
From XPages Hero to OSGi Guru: Taking the Scary out of Building Extension Lib...From XPages Hero to OSGi Guru: Taking the Scary out of Building Extension Lib...
From XPages Hero to OSGi Guru: Taking the Scary out of Building Extension Lib...Paul Withers
 
Engage 2014 OpenNTF Domino API Slides
Engage 2014 OpenNTF Domino API SlidesEngage 2014 OpenNTF Domino API Slides
Engage 2014 OpenNTF Domino API SlidesPaul Withers
 
Beyond Domino Designer
Beyond Domino DesignerBeyond Domino Designer
Beyond Domino DesignerPaul Withers
 
DanNotes 2013: OpenNTF Domino API
DanNotes 2013: OpenNTF Domino APIDanNotes 2013: OpenNTF Domino API
DanNotes 2013: OpenNTF Domino APIPaul Withers
 
BP206 It's Not Herculean: 12 Tasks Made Easier with IBM Domino XPages
BP206 It's Not Herculean: 12 Tasks Made Easier with IBM Domino XPagesBP206 It's Not Herculean: 12 Tasks Made Easier with IBM Domino XPages
BP206 It's Not Herculean: 12 Tasks Made Easier with IBM Domino XPagesPaul Withers
 
DanNotes XPages Mobile Controls
DanNotes XPages Mobile ControlsDanNotes XPages Mobile Controls
DanNotes XPages Mobile ControlsPaul Withers
 
BP210 XPages: Enter The Dojo
BP210 XPages: Enter The DojoBP210 XPages: Enter The Dojo
BP210 XPages: Enter The DojoPaul Withers
 

Plus de Paul Withers (19)

Engage 2019: Introduction to Node-Red
Engage 2019: Introduction to Node-RedEngage 2019: Introduction to Node-Red
Engage 2019: Introduction to Node-Red
 
Engage 2019: Modernising Your Domino and XPages Applications
Engage 2019: Modernising Your Domino and XPages Applications Engage 2019: Modernising Your Domino and XPages Applications
Engage 2019: Modernising Your Domino and XPages Applications
 
Engage 2019: AI What Is It Good For
Engage 2019: AI What Is It Good ForEngage 2019: AI What Is It Good For
Engage 2019: AI What Is It Good For
 
Social Connections 14 - ICS Integration with Node-RED and Open Source
Social Connections 14 - ICS Integration with Node-RED and Open SourceSocial Connections 14 - ICS Integration with Node-RED and Open Source
Social Connections 14 - ICS Integration with Node-RED and Open Source
 
ICONUK 2018 - Do You Wanna Build a Chatbot
ICONUK 2018 - Do You Wanna Build a ChatbotICONUK 2018 - Do You Wanna Build a Chatbot
ICONUK 2018 - Do You Wanna Build a Chatbot
 
IBM Think Session 8598 Domino and JavaScript Development MasterClass
IBM Think Session 8598 Domino and JavaScript Development MasterClassIBM Think Session 8598 Domino and JavaScript Development MasterClass
IBM Think Session 8598 Domino and JavaScript Development MasterClass
 
IBM Think Session 3249 Watson Work Services Java SDK
IBM Think Session 3249 Watson Work Services Java SDKIBM Think Session 3249 Watson Work Services Java SDK
IBM Think Session 3249 Watson Work Services Java SDK
 
GraphQL 101
GraphQL 101GraphQL 101
GraphQL 101
 
GraphQL 101
GraphQL 101GraphQL 101
GraphQL 101
 
OpenNTF Domino API (ODA): Super-Charging Domino Development
OpenNTF Domino API (ODA): Super-Charging Domino DevelopmentOpenNTF Domino API (ODA): Super-Charging Domino Development
OpenNTF Domino API (ODA): Super-Charging Domino Development
 
OpenNTF Domino API - Overview Introduction
OpenNTF Domino API - Overview IntroductionOpenNTF Domino API - Overview Introduction
OpenNTF Domino API - Overview Introduction
 
What's New and Next in OpenNTF Domino API (ICON UK 2014)
What's New and Next in OpenNTF Domino API (ICON UK 2014)What's New and Next in OpenNTF Domino API (ICON UK 2014)
What's New and Next in OpenNTF Domino API (ICON UK 2014)
 
From XPages Hero to OSGi Guru: Taking the Scary out of Building Extension Lib...
From XPages Hero to OSGi Guru: Taking the Scary out of Building Extension Lib...From XPages Hero to OSGi Guru: Taking the Scary out of Building Extension Lib...
From XPages Hero to OSGi Guru: Taking the Scary out of Building Extension Lib...
 
Engage 2014 OpenNTF Domino API Slides
Engage 2014 OpenNTF Domino API SlidesEngage 2014 OpenNTF Domino API Slides
Engage 2014 OpenNTF Domino API Slides
 
Beyond Domino Designer
Beyond Domino DesignerBeyond Domino Designer
Beyond Domino Designer
 
DanNotes 2013: OpenNTF Domino API
DanNotes 2013: OpenNTF Domino APIDanNotes 2013: OpenNTF Domino API
DanNotes 2013: OpenNTF Domino API
 
BP206 It's Not Herculean: 12 Tasks Made Easier with IBM Domino XPages
BP206 It's Not Herculean: 12 Tasks Made Easier with IBM Domino XPagesBP206 It's Not Herculean: 12 Tasks Made Easier with IBM Domino XPages
BP206 It's Not Herculean: 12 Tasks Made Easier with IBM Domino XPages
 
DanNotes XPages Mobile Controls
DanNotes XPages Mobile ControlsDanNotes XPages Mobile Controls
DanNotes XPages Mobile Controls
 
BP210 XPages: Enter The Dojo
BP210 XPages: Enter The DojoBP210 XPages: Enter The Dojo
BP210 XPages: Enter The Dojo
 

Dernier

Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 

Dernier (20)

Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 

Eureka moment

  • 1. The Eureka Moment: XPages Under The Covers Paul Withers Intec Systems Limited
  • 2. Agenda Introduction XPages Server Processing JVM and the NSF Memory Management JSF Event Model – Lifecycle JSF Event Model – Performance Rendered / Language Performance
  • 3. About Me Senior Domino Developer, Intec Systems Ltd XPages Developer since 8.5.0 IBM Champion Co-Host of The XCast Co-Author of XPages Extension Library book
  • 4. Why This Session? Nothing in life is to be feared, it is only to be understood. Now is the time to understand more, so that we may fear less. Marie Curie A matter that becomes clear ceases to concern us. Friedrich Nietzsche Furious activity is no substitute for understanding. H.H. Williams No. I am your father. Darth Vader
  • 5. Why This Session? XPages vs Domino HTTP Language Performance Language Roadmap and Justification Persistence options Which setting for which application JSF Lifecycle – understand page processing Partial refresh – beyond event defaults
  • 6. Expectations You should: Know what XPages are Know that XPages runs on a Domino Server Know the Computed Field, Edit Box, Repeat controls You don't: Have a thorough understanding of JSF Have expert knowledge of dataContexts, managed beans, PhaseListeners and VariableResolvers
  • 7. To Download Sample App Source code at http://projects.qtzar.com/projects/jsf_eureka Source control with Git Download and install eGit from OpenNTF Create new project from source code http://git.qtzar.com/jsf_eureka.git/ Associate with new NSF
  • 8. Agenda Introduction XPages Server Processing JVM and the NSF Memory Management JSF Event Model – Lifecycle JSF Event Model – Performance Rendered / Language Performance
  • 9. Server Architecture Java Virtual Machine XSP Command Manager Domino HTTP Server
  • 10. So When an XPage Is Served... Can HTTP Server resolve the URL? HTTP 404 Error Does user have access to NSF? HTTP Authentication Page Can HTTP Server find resource in the NSF? HTTP 404 Error
  • 11. So When an XPage Is Served... Does the signer have access to run XPages? HTTP 403 Error Are there SSJS errors? XSP Command Manager takes over HTTP 500 error* Return XPage
  • 12. *HTTP Error 500 Reasons No server / custom error page defined Missing Extension Library or other library on server java.lang.NoClassDefFoundError java.lang.securityException Check <domino>dataIBM_TECHNICAL_ SUPPORTxpages_exc_ServerName_yyyy_ MM_dd@hh_mm_ss.log
  • 13. XPiNC Server-based NSFs need a local XSP Command Manager etc. Authentication via Notes logon on local PC Signer access granted via ECL on local PC XPages Extensions, Java packages must be deployed locally Logging accessible from Help → Support → View Log on local PC
  • 14. Agenda Introduction XPages Server Processing JVM and the NSF Memory Management JSF Event Model – Lifecycle JSF Event Model – Performance Rendered / Language Performance
  • 15. Java Virtual Machine Means... Each NSF is a separate Java application sessionScope is per NSF Browser session, NOT user session Setting sessionScope in Db1.nsf does NOT set sessionScope in Db2.nsf sessionScope is ONLY within JVM – not cleared by HTTP logout
  • 16. DEMO
  • 17. JAVA Virtual Machine XPages → Java classes → Java bytecode Each control is a Java class Extensions are pre-packaged Java classes Define properties (what can be customised) Define renderers (what is printed) SSJS code is String passed to Java method Java code prints HTML to browser
  • 18. XPages Control Languages Literal values Strings, booleans etc Expression Language #{document1.FirstName} SSJS #{javascript:document1.getItemValueString(“FirstName”)} Custom All of the above
  • 19. Hypotheses How will fewer controls improve performance? How will different languages affect performance? What is the comparison of standard Dojo vs Extension Library perform?
  • 20. DEMO
  • 21. Performance of Languages The fewer controls the better = less Java code to be run Reason for Extension Library controls Less Java code in XPages / Custom Controls Some controls lazy loaded Combining languages is good EL is quicker than SSJS
  • 22. Agenda Introduction XPages Server Processing JVM and the NSF Memory Management JSF Event Model – Lifecycle JSF Event Model – Performance Rendered / Language Performance
  • 23. JSF and Serialization HTTP is state-less JSF keeps state-full server representation of UI (component tree or view) Objects stored in component tree must be serializable (persist between requests) Domino objects recycled after each request Datasources are recycle-safe
  • 24.
  • 26. Persistence options Component tree (map of XPage on server) either held in memory of JVM or serialized to disk xsp.persistence.XXX properties See persistence tab of new xsp.properties editor Package Explorer → WebContentWEB- INFxsp.properties
  • 27. Demo
  • 28. Persistence Summary Keep Pages in Memory Remembering, remembering, remembering Keep Pages on Disk Writing...next? You want it again? Reading Keep Only The Current Page In Memory Remembering, remembering, remembering Oh, new page? Writing...and now Remembering, remembering, remembering
  • 29. Persistence Summary Gzip Persisted Files Writing ...next? You want it again? Reading Persist Files Asynchronously Server busy, remembering. Next? (Writing, writing) Maximum Pages... Remembering, remembering, remembering Writing, retrieving, writing, writing
  • 31. General options Settings available in xsp.properties editor Application & Session timeouts XSP Command Manager within HTTP server Session timeout overridden by HTTP session timeout xsp.session.transient=“false” XPage becomes stateless Default VALUES overridden between requests Default STATES not overridden
  • 32. Demo
  • 33. xsp.session.transient State not persisted NOT “Go to next page” from current INSTEAD “Go to next page” from default NOT “Toggle show detail” from previous state INSTEAD “Toggle show detail” from default Values persisted Great for large, read-only pages – no storage Need to build your own “relative” functionality
  • 34. Agenda Introduction XPages Server Processing JVM and the NSF Memory Management JSF Event Model – Lifecycle JSF Event Model – Performance Rendered / Language Performance
  • 36. Six Phases Restore View JSF component tree retrieved Apply Request Values this.setSubmittedValue(passedValue) run Any event logic run if immediate=“true” Process Validation Any converters applied Any validators applied
  • 37. Six Phases Continued Update Model Values this.setValue(this.getSubmittedValue()); this.setSubmittedValue(null) Invoke Application Any event logic run Render Response HTML rendered and state saved Only event that runs during page load
  • 38. AbstractPhaseListener Abstract because it can't be instantiated Implements javax.faces.event.PhaseListener Allows us to track JSF lifecycle phases Java class plus reference in faces-config
  • 39. DEMO
  • 40. Basic Processing Validation fails beforeRestoreView afterRestoreView beforeApplyRequestValues afterApplyRequestValues beforeProcessValidations beforeRenderResponse afterRenderResponse Event logic not run
  • 41. No Validation Conversion still honoured If failed, skips from ProcessValidations to RenderResponse Event Logic not run If no conversion errors, all phases run Values passed from submittedValue to value Component tree updated
  • 42. immediate=“true” Validation fails beforeRestoreView afterRestoreView beforeApplyRequestValues afterApplyRequestValues beforeRenderResponse afterRenderResponse Event logic run in ApplyRequestValues phase Component value never goes past submittedValue Component tree not updated
  • 43. DIY SSJS Validators Runs AFTER Apply Request Values Runs BEFORE Update Model Values submittedValue property set value property still NULL (or last stored value) Use validator property of control Check getSubmittedValue() Post error with facesContext.addMessage() Abort with this.setValid(false)
  • 44. DIY Validator Runs at same time as any other validator Use xp:validator child of validators property of control validatorId property maps to validator-id in faces-config.xml validator-class maps to Java class
  • 45. DIY Validator – Java Class Use Java class implementing Validator javax.faces.validator.Validator validate(FacesContext,UIComponent,Object) method performs validation, returns void Post error using throw ValidatorException Third argument is submittedValue – String ValidatorException takes FacesMessage javax.faces.application.FacesMessage
  • 46. Agenda Introduction XPages Server Processing JVM and the NSF Memory Management JSF Event Model – Lifecycle JSF Event Model – Performance Rendered / Language Performance
  • 47. Performance Smackdown Compute on Page Load (Loaded) Compute Dynamically (Runtime) Theme dataContexts “Global variables” Scoped to XPage, Custom Control, Panel Referenced via EL – #{var1}
  • 48. Performance Smackdown Page Load – how many calls Partial Refresh – how many calls execMode=“partial” Runs over only part of component tree
  • 49. DEMO
  • 50. Smackdown Results Loaded makes fewer calls Theme cannot override loaded Runtime and theme makes same calls dataContext makes fewer calls execMode=“partial” improves performance IMPORTANT: Define id to execute lifecycle on EventHandler – All Properties
  • 51. Agenda Introduction XPages Server Processing JVM and the NSF Memory Management JSF Event Model – Lifecycle JSF Event Model – Performance Rendered / Language Performance
  • 52. Bonus – Repeats Revisited See Bonus – Java Performance + Rendered rendered property set for each of 50000 rows SSJS in Script Library performs worst SL much worse on partial refresh VariableResolver best for performance Deprecated in JSF 2.0 for ELResolver DataContext next best (rendered property), but only reusable within page
  • 53. Summary Scoped variables not cleared by ?logout Combining controls improves performance Persistence options can optimise application JSF lifecycle affects event processing Loaded and dataContexts offer benefits execMode improves performance
  • 54. Summary Script libraries work for application reusability dataContexts better for page reusability VariableResolver best for application-level reusability Upgrade VariableResolver to ELResolver when XPages updated to JSF 2.0 Use AbstractPhaseListener to test
  • 58. To Download Sample App Source code at http://projects.qtzar.com/projects/jsf_eureka Source control with Git Download and install eGit from OpenNTF Create new project from source code Associate with new NSF
  • 59. Evals, Questions & Contact Details Paul Withers email: pwithers@intec.co.uk twitter: @PaulSWithers skype: PaulSWithers blog: http://www.intec.co.uk/blog YouTube channel: http://www.youtube.com/intecsystems website: http://www.intec.co.uk

Notes de l'éditeur

  1. Human nature is to resist what is new because we don&apos;t understand it. Lots of new things going on behind scenes in XPages. This session will demystify some. Who has struggled with a problem for hours, then found one piece of information that would have given you the answer straight away, if you&apos;d known it? That&apos;s the Eureka moment: one crucial piece of info that explains everything.
  2. If you attended Intro to XPages session, you will be able to keep up with this session. If you didn&apos;t go because you knew it, you&apos;ll be able to keep up with this session. If you know what a VariableResolver is, how to code one, why you might need to change it in the future, go get a beer!
  3. Traditional Domino web apps used HTTP server. Java servlets used JVM XPages uses both How? When?
  4. HTTP 500 if fatal error with XPages runtime - memory issue - Extension Library used by app but not installed - Java class cannot be loaded (NoClassDefFoundError) - Other database compile issue
  5. XPINC IS LOCAL EVEN IF NSF IS ON SERVER
  6. Who wants a demo? NOTE SPECIFICALLY sessionScope.sessionID
  7. Summary of demo
  8. Based on previous slides, what will happen? If we split languages across controls, so controls with single language? If we combine literal values and A.N.Other language? If we use different languages?
  9. Jump to Application Perspective – Package Explorer – Project Explorer Java code does the same as an Xagent - facesContext,getResponseWriter() - writer.write()
  10. Based on previous slides, what will happen? If we split languages across controls, so controls with single language? If we combine literal values and A.N.Other language? If we use different languages?
  11. Summary of demo
  12. If you want to store / pass info between requests - Add to QueryString - Store in cookies - Pass in AJAX request in response JSF handles this – we&apos;ve seen sessionID cookie and JSF sessionID in sessionScope. This ensures same session is used Recycle-safe, i.e. values are stored in Java beans and written back to the server as and when required. We&apos;ll come back tot hat later.
  13. If you want to store / pass info between requests - Add to QueryString - Store in cookies - Pass in AJAX request in response JSF handles this – we&apos;ve seen sessionID cookie and JSF sessionID in sessionScope. This ensures same session is used Recycle-safe, i.e. values are stored in Java beans and written back to the server as and when required. We&apos;ll come back tot hat later.
  14. Screenshots of new Persistence tab of xsp.properties file Server Page Persistence – see demo Page Persistence Mode
  15. If immediate = “true” and using component values, need to use getComponent(“myComponent”).getSubmittedValue()
  16. If NOT using immediate = “true” and using component values, need to use getComponent(“myComponent”).getValue()
  17. In the following demos, I&apos;m using an AbstractPhaseListener to check what&apos;s happening where
  18. Let&apos;s see what happens during page events
  19. Summary of results of JSF Lifecycle - Basic
  20. Summary of results of JSF Lifecycle – No Validation
  21. Summary of results of JSF Lifecycle - Immediate
  22. Let&apos;s see what happens depending on where Computed Field value property and Edit Box rendered property are defined
  23. Summary of demo