SlideShare une entreprise Scribd logo
1  sur  25
Télécharger pour lire hors ligne
AD111
Harnessing the Power of Server-Side JavaScript and
Other Advanced XPage Techniques
Tim Tripcony | GROUP Experts - XMage
Stephan H. Wissel | IBM - Lotus Technology & Productivity Advisor
Agenda
●   What exactly is Server Side Java Script (SSJS)

●   Common practices: pattern & anti-pattern

●   Code samples




                                        The REAL Agenda: code, code, code

             2
Server-side JavaScript is JavaScript
●   all ECMAScript 3 keywords, operators and syntax still apply
     ▬   var myNumber = 0;
     ▬   var myArray = [ ]; // preferred over new Array();
     ▬   var myObject = { }; // preferred over new Object();
     ▬   function foo(){return "bar";}
     ▬   var depends = someBoolean ? "default" : "other";
●   ECMAScript scope rules apply, including closure
     ▬   More in the Demo section




             3
Server-side JavaScript is not JavaScript (1)
●   browser-specific globals not available
     ▬  window
     ▬  document
     ▬  location
●   Platform-specific globals and JSF-specifics
     ▬  session: current NotesSession
     ▬  database: current NotesDatabase, equal to
        session.getCurrentDatabase()
     ▬  param: URL parameters and post data
     ▬  context & facesContext: current state data and direct access to
        servlet engine




              4
Server-side JavaScript is not JavaScript (2)
●   @functions (e.g. @UserName() )
●   scope variables
     ▬ requestScope
     ▬ viewScope
     ▬ sessionScope
     ▬ applicationScope
●   Optional type declarations
●   Seamless Java™ integration




             5
Agenda
●   What exactly is Server Side Java Script (SSJS)

●   Common practices: pattern & anti-pattern

●   Code samples




             6
The use of context
●   getUser(): access to name, roles, groups, and more
●   getUrl(): no more String parsing to get query string parameters and other
    URL info
●   getUserAgent(): server-side browser detection
●   redirectToPage() / redirectToHome(): easy programmatic navigation




              7
The use of facesContext
●   getResponseWriter() / getResponseStream(): send your own output to
    the browser (like Print in LotusScript)
●   getExternalContext(): direct access to the servlet
      ▬ getRequest()
      ▬ GetResponse()
●   You need to understand the difference between the ResponseWriter
    and ResponseStream
      ▬ Writer doesn't take binary data
      ▬ Stream excludes Writer
      ▬ Can only use one per request
JavaScript Closures
●   An object returned from a function has access to variables defined within
    that function
      ▬ Includes arguments passed to the function
●   This allows for OOP constructs in JavaScript objects
      ▬ Private properties
      ▬ Private functions
      ▬ Inheritance without .prototype




              9
Take advantage of XPages' JSF heritage
●   Java Objects at your disposal
     ▬  java.util: powerful storage and iteration
     ▬  java.net: easy access to remote data
     ▬  Core JSF packages and IBM's implementation
●   Get to the servlet
●   Write your own servlet (you are on your own here)




             10
Write agent Style code in XPages
●   Control the rendering
●   Get the output writer
●   Get the output stream (one of the two)
●   Use cases:
     ▬ Replace web agent (?OpenAgent)
     ▬ Output other formats (PDF, ODF)




             11
The use of scope
●   requestScope: storage for anything needed multiple times in the same
    HTTP request
●   viewScope: survives for the life of a page - including partial and full
    refresh events
●   sessionScope: "shopping cart" storage - survives for the duration of a
    user's session, BUT can expire even if the user is still logged in (set in
    application properties to balance server performance with application
    performance)
●   applicationScope: storage shared among all users of the NSF - any data
    that numerous users are likely to need but shouldn't be queried on every
    request




              12
Anti-Pattern: What always goes wrong
●   The network is fast and reliable
●   Configuration parameters are retrieved through @DBLookup
●   Connect to JDBC without a session pool
●   Use data binding when you access data, not anything else




             13
Everybody's favorite objects
●   UI Elements
     ▬  Create a control programmatically
     ▬  Update control properties via event handlers
●   DOMUtil
     ▬  Parse DXL and other XML
●   cookie
     ▬  Set and read cookies using .put() and .get()




             14
Error Handling
●   try/catch: provide individual operations that might fail a specific response
    to failure
●   Enable “Display default error page” during development and testing
●   Create custom error pages to display uncaught exceptions




              15
Debugging
●   print(): send a single String statement to server log and console
●   _dump(): send detailed info about any object to log and console




              16
Unit Tests
        ●   Courtesy of Lorcan McDonald (IBM Lab Dublin)
        ●   Available on OpenNTF
        ●   Enables Test Driven
            Development (get used to it)




http://openntf.org/internal/ontfcatalog.nsf/topicThread.xsp?action=openDocument&documentId=9C66A4F3854E61BE852575A1003C6CAD

                           17
Reaching out to Java
●   Put source into webcontent/source
●   Add directory to Java build path
●   Package name required
●   Define like a JavaScript variable:
    var xy = new com.acme.RoadRunner();
    xy.foolCoyote(“Meep Meep”);




            18
Managed Beans
●   Concept inherited from JSF underpinnings
●   Bean is described in XML declaration
●   Can be used in JavaScript expressions
●   Automatically loaded when needed
●   Bound to a specific scope
●   Take advantage of Java capabilities (e.g. Connection pooling, threading
    etc)




             19
Agenda
●   What exactly is Server Side Java Script (SSJS)

●   Common practices: pattern & anti-pattern

●   Code samples




             20
Application Chat
●   Application Context
●   Synchronized Access
●   Closure
●   Periodic partial refresh




              21
Shopping Cart
●   Session Context
●   Closure
●   Java integration




             22
Cached Search
●   Application Context
●   Managed Bean
●   Network handling




             23
Q&A




      24
Legal Disclaimer
  ●        © IBM Corporation 2009. All Rights Reserved.


The information contained in this publication is provided for informational purposes only. While efforts were made to verify the completeness and accuracy of the information contained in this publication, it is provided AS IS
without warranty of any kind, express or implied. In addition, this information is based on IBM’s current product plans and strategy, which are subject to change by IBM without notice. IBM shall not be responsible for any
damages arising out of the use of, or otherwise related to, this publication or any other materials. Nothing contained in this publication is intended to, nor shall have the effect of, creating any warranties or representations
from IBM or its suppliers or licensors, or altering the terms and conditions of the applicable license agreement governing the use of IBM software.


References in this presentation to IBM products, programs, or services do not imply that they will be available in all countries in which IBM operates. Product release dates and/or capabilities referenced in this presentation
may change at any time at IBM’s sole discretion based on market opportunities or other factors, and are not intended to be a commitment to future product or feature availability in any way. Nothing contained in these
materials is intended to, nor shall have the effect of, stating or implying that any activities undertaken by you will result in any specific sales, revenue growth or other results.


IBM, the IBM logo, Lotus, and Lotusphere are trademarks of International Business Machines Corporation in the United States, other countries, or both.

Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.

All references to ACME refer to a fictitious company and are used for illustration purposes only.




                                         25

Contenu connexe

Tendances

Asynchronous Module Definition (AMD) used for Dependency Injection (DI) and MVVM
Asynchronous Module Definition (AMD) used for Dependency Injection (DI) and MVVMAsynchronous Module Definition (AMD) used for Dependency Injection (DI) and MVVM
Asynchronous Module Definition (AMD) used for Dependency Injection (DI) and MVVMHugh Anderson
 
JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...
JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...
JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...JSFestUA
 
JSFest 2019: Technology agnostic microservices at SPA frontend
JSFest 2019: Technology agnostic microservices at SPA frontendJSFest 2019: Technology agnostic microservices at SPA frontend
JSFest 2019: Technology agnostic microservices at SPA frontendVlad Fedosov
 
Web Applications of the future: Combining JEE6 & JavaFX
Web Applications of the future: Combining JEE6 & JavaFXWeb Applications of the future: Combining JEE6 & JavaFX
Web Applications of the future: Combining JEE6 & JavaFXPaul Bakker
 
[Mas 500] Web Basics
[Mas 500] Web Basics[Mas 500] Web Basics
[Mas 500] Web Basicsrahulbot
 
ColdFusion framework comparison
ColdFusion framework comparisonColdFusion framework comparison
ColdFusion framework comparisonVIkas Patel
 
An Introduction To Model  View  Controller In XPages
An Introduction To Model  View  Controller In XPagesAn Introduction To Model  View  Controller In XPages
An Introduction To Model  View  Controller In XPagesUlrich Krause
 
Spring framework 3.2 > 4.0 — themes and trends
Spring framework 3.2 > 4.0 — themes and trendsSpring framework 3.2 > 4.0 — themes and trends
Spring framework 3.2 > 4.0 — themes and trendsArawn Park
 
Встреча №9. Будущее паттерна MVVM в iOS приложениях, Денис Лебедев
Встреча №9. Будущее паттерна MVVM в iOS приложениях, Денис ЛебедевВстреча №9. Будущее паттерна MVVM в iOS приложениях, Денис Лебедев
Встреча №9. Будущее паттерна MVVM в iOS приложениях, Денис ЛебедевCocoaHeads
 
Server Side Javascript
Server Side JavascriptServer Side Javascript
Server Side Javascriptrajivmordani
 
An introduction to Java 9 & Its Features
An introduction to Java 9 & Its FeaturesAn introduction to Java 9 & Its Features
An introduction to Java 9 & Its FeaturesNexSoftsys
 
Modularize JavaScript with RequireJS
Modularize JavaScript with RequireJSModularize JavaScript with RequireJS
Modularize JavaScript with RequireJSMinh Hoang
 

Tendances (20)

Asynchronous Module Definition (AMD) used for Dependency Injection (DI) and MVVM
Asynchronous Module Definition (AMD) used for Dependency Injection (DI) and MVVMAsynchronous Module Definition (AMD) used for Dependency Injection (DI) and MVVM
Asynchronous Module Definition (AMD) used for Dependency Injection (DI) and MVVM
 
JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...
JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...
JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...
 
JSFest 2019: Technology agnostic microservices at SPA frontend
JSFest 2019: Technology agnostic microservices at SPA frontendJSFest 2019: Technology agnostic microservices at SPA frontend
JSFest 2019: Technology agnostic microservices at SPA frontend
 
OpenCms Days 2016: Multilingual websites with OpenCms
OpenCms Days 2016:   Multilingual websites with OpenCmsOpenCms Days 2016:   Multilingual websites with OpenCms
OpenCms Days 2016: Multilingual websites with OpenCms
 
Jsp
JspJsp
Jsp
 
Web Applications of the future: Combining JEE6 & JavaFX
Web Applications of the future: Combining JEE6 & JavaFXWeb Applications of the future: Combining JEE6 & JavaFX
Web Applications of the future: Combining JEE6 & JavaFX
 
[Mas 500] Web Basics
[Mas 500] Web Basics[Mas 500] Web Basics
[Mas 500] Web Basics
 
servlets and jsp
servlets and jspservlets and jsp
servlets and jsp
 
RequireJS
RequireJSRequireJS
RequireJS
 
ColdFusion framework comparison
ColdFusion framework comparisonColdFusion framework comparison
ColdFusion framework comparison
 
Advent of magento2
Advent of magento2Advent of magento2
Advent of magento2
 
An Introduction To Model  View  Controller In XPages
An Introduction To Model  View  Controller In XPagesAn Introduction To Model  View  Controller In XPages
An Introduction To Model  View  Controller In XPages
 
Spring framework 3.2 > 4.0 — themes and trends
Spring framework 3.2 > 4.0 — themes and trendsSpring framework 3.2 > 4.0 — themes and trends
Spring framework 3.2 > 4.0 — themes and trends
 
Встреча №9. Будущее паттерна MVVM в iOS приложениях, Денис Лебедев
Встреча №9. Будущее паттерна MVVM в iOS приложениях, Денис ЛебедевВстреча №9. Будущее паттерна MVVM в iOS приложениях, Денис Лебедев
Встреча №9. Будущее паттерна MVVM в iOS приложениях, Денис Лебедев
 
OpenCms Days 2014 - Nested containers in action
OpenCms Days 2014 - Nested containers in actionOpenCms Days 2014 - Nested containers in action
OpenCms Days 2014 - Nested containers in action
 
Server Side Javascript
Server Side JavascriptServer Side Javascript
Server Side Javascript
 
An introduction to Java 9 & Its Features
An introduction to Java 9 & Its FeaturesAn introduction to Java 9 & Its Features
An introduction to Java 9 & Its Features
 
Modularize JavaScript with RequireJS
Modularize JavaScript with RequireJSModularize JavaScript with RequireJS
Modularize JavaScript with RequireJS
 
EJB 3.1 and GlassFish v3 Prelude
EJB 3.1 and GlassFish v3 PreludeEJB 3.1 and GlassFish v3 Prelude
EJB 3.1 and GlassFish v3 Prelude
 
JavaFX in Action Part I
JavaFX in Action Part IJavaFX in Action Part I
JavaFX in Action Part I
 

En vedette

Taking Your Local Business to Higher Level with Location Based Services
Taking Your Local Business to Higher Level with Location Based ServicesTaking Your Local Business to Higher Level with Location Based Services
Taking Your Local Business to Higher Level with Location Based ServicesActionplanr
 
How to Raise Money Online Throuigh Crowdfunding
How to Raise Money Online Throuigh CrowdfundingHow to Raise Money Online Throuigh Crowdfunding
How to Raise Money Online Throuigh CrowdfundingActionplanr
 
How To Increase Sales With Internet Marketing
How To Increase Sales With Internet MarketingHow To Increase Sales With Internet Marketing
How To Increase Sales With Internet MarketingActionplanr
 
Taking Your Business To The Next Level with Social Media
Taking Your Business To The Next Level with Social MediaTaking Your Business To The Next Level with Social Media
Taking Your Business To The Next Level with Social MediaActionplanr
 
Taking Your Local Business To The Next Level With Location-Based Services
Taking Your Local Business To The Next Level With Location-Based Services Taking Your Local Business To The Next Level With Location-Based Services
Taking Your Local Business To The Next Level With Location-Based Services Actionplanr
 
AD113 -- IBM Lotus Notes Discussion Template: Next Generation and Other OpenN...
AD113 -- IBM Lotus Notes Discussion Template: Next Generation and Other OpenN...AD113 -- IBM Lotus Notes Discussion Template: Next Generation and Other OpenN...
AD113 -- IBM Lotus Notes Discussion Template: Next Generation and Other OpenN...ddrschiw
 
Traveler preview guide
Traveler preview guideTraveler preview guide
Traveler preview guideddrschiw
 
Traveler preview guide
Traveler preview guideTraveler preview guide
Traveler preview guideddrschiw
 
Product! - The road to production deployment
Product! - The road to production deploymentProduct! - The road to production deployment
Product! - The road to production deploymentFilippo Zanella
 
AD112 -- Development and Deployment of Lotus Product Documentation Wikis
AD112 -- Development and Deployment of Lotus Product Documentation WikisAD112 -- Development and Deployment of Lotus Product Documentation Wikis
AD112 -- Development and Deployment of Lotus Product Documentation Wikisddrschiw
 

En vedette (10)

Taking Your Local Business to Higher Level with Location Based Services
Taking Your Local Business to Higher Level with Location Based ServicesTaking Your Local Business to Higher Level with Location Based Services
Taking Your Local Business to Higher Level with Location Based Services
 
How to Raise Money Online Throuigh Crowdfunding
How to Raise Money Online Throuigh CrowdfundingHow to Raise Money Online Throuigh Crowdfunding
How to Raise Money Online Throuigh Crowdfunding
 
How To Increase Sales With Internet Marketing
How To Increase Sales With Internet MarketingHow To Increase Sales With Internet Marketing
How To Increase Sales With Internet Marketing
 
Taking Your Business To The Next Level with Social Media
Taking Your Business To The Next Level with Social MediaTaking Your Business To The Next Level with Social Media
Taking Your Business To The Next Level with Social Media
 
Taking Your Local Business To The Next Level With Location-Based Services
Taking Your Local Business To The Next Level With Location-Based Services Taking Your Local Business To The Next Level With Location-Based Services
Taking Your Local Business To The Next Level With Location-Based Services
 
AD113 -- IBM Lotus Notes Discussion Template: Next Generation and Other OpenN...
AD113 -- IBM Lotus Notes Discussion Template: Next Generation and Other OpenN...AD113 -- IBM Lotus Notes Discussion Template: Next Generation and Other OpenN...
AD113 -- IBM Lotus Notes Discussion Template: Next Generation and Other OpenN...
 
Traveler preview guide
Traveler preview guideTraveler preview guide
Traveler preview guide
 
Traveler preview guide
Traveler preview guideTraveler preview guide
Traveler preview guide
 
Product! - The road to production deployment
Product! - The road to production deploymentProduct! - The road to production deployment
Product! - The road to production deployment
 
AD112 -- Development and Deployment of Lotus Product Documentation Wikis
AD112 -- Development and Deployment of Lotus Product Documentation WikisAD112 -- Development and Deployment of Lotus Product Documentation Wikis
AD112 -- Development and Deployment of Lotus Product Documentation Wikis
 

Similaire à Ad111

XPages Blast - ILUG 2010
XPages Blast - ILUG 2010XPages Blast - ILUG 2010
XPages Blast - ILUG 2010Tim Clark
 
IBM Lotusphere 2011 AD306 - IBM Lotus Sametime Proxy: A Collaborative Recipe...
IBM Lotusphere 2011 AD306 - IBM Lotus Sametime Proxy:  A Collaborative Recipe...IBM Lotusphere 2011 AD306 - IBM Lotus Sametime Proxy:  A Collaborative Recipe...
IBM Lotusphere 2011 AD306 - IBM Lotus Sametime Proxy: A Collaborative Recipe...William Holmes
 
Intro to XPages for Administrators (DanNotes, November 28, 2012)
Intro to XPages for Administrators (DanNotes, November 28, 2012)Intro to XPages for Administrators (DanNotes, November 28, 2012)
Intro to XPages for Administrators (DanNotes, November 28, 2012)Per Henrik Lausten
 
Ad109 - XPages Performance and Scalability
Ad109 - XPages Performance and ScalabilityAd109 - XPages Performance and Scalability
Ad109 - XPages Performance and Scalabilityddrschiw
 
How to generate customized java 8 code from your database
How to generate customized java 8 code from your databaseHow to generate customized java 8 code from your database
How to generate customized java 8 code from your databaseSpeedment, Inc.
 
Silicon Valley JUG - How to generate customized java 8 code from your database
Silicon Valley JUG - How to generate customized java 8 code from your databaseSilicon Valley JUG - How to generate customized java 8 code from your database
Silicon Valley JUG - How to generate customized java 8 code from your databaseSpeedment, Inc.
 
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...Malin Weiss
 
JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...
JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...
JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...Speedment, Inc.
 
AngularJS 1.x - your first application (problems and solutions)
AngularJS 1.x - your first application (problems and solutions)AngularJS 1.x - your first application (problems and solutions)
AngularJS 1.x - your first application (problems and solutions)Igor Talevski
 
What’s new for Developers in IBM Domino & Domino Designer 9.0.1
What’s new for Developers in IBM Domino & Domino Designer 9.0.1What’s new for Developers in IBM Domino & Domino Designer 9.0.1
What’s new for Developers in IBM Domino & Domino Designer 9.0.1IBM Connections Developers
 
React native introduction (Mobile Warsaw)
React native introduction (Mobile Warsaw)React native introduction (Mobile Warsaw)
React native introduction (Mobile Warsaw)Jarek Potiuk
 
JavascriptMVC: Another choice of web framework
JavascriptMVC: Another choice of web frameworkJavascriptMVC: Another choice of web framework
JavascriptMVC: Another choice of web frameworkAlive Kuo
 
Ad108 - XPages in the IBM Lotus Notes Client - A Deep Dive!
Ad108 - XPages in the IBM Lotus Notes Client - A Deep Dive!Ad108 - XPages in the IBM Lotus Notes Client - A Deep Dive!
Ad108 - XPages in the IBM Lotus Notes Client - A Deep Dive!ddrschiw
 
Spring Update | July 2023
Spring Update | July 2023Spring Update | July 2023
Spring Update | July 2023VMware Tanzu
 
Real World Java Compatibility
Real World Java CompatibilityReal World Java Compatibility
Real World Java CompatibilityTim Ellison
 
Graal Tutorial at CGO 2015 by Christian Wimmer
Graal Tutorial at CGO 2015 by Christian WimmerGraal Tutorial at CGO 2015 by Christian Wimmer
Graal Tutorial at CGO 2015 by Christian WimmerThomas Wuerthinger
 
Java script Session No 1
Java script Session No 1Java script Session No 1
Java script Session No 1Saif Ullah Dar
 

Similaire à Ad111 (20)

Grails 101
Grails 101Grails 101
Grails 101
 
XPages Blast - ILUG 2010
XPages Blast - ILUG 2010XPages Blast - ILUG 2010
XPages Blast - ILUG 2010
 
IBM Lotusphere 2011 AD306 - IBM Lotus Sametime Proxy: A Collaborative Recipe...
IBM Lotusphere 2011 AD306 - IBM Lotus Sametime Proxy:  A Collaborative Recipe...IBM Lotusphere 2011 AD306 - IBM Lotus Sametime Proxy:  A Collaborative Recipe...
IBM Lotusphere 2011 AD306 - IBM Lotus Sametime Proxy: A Collaborative Recipe...
 
Intro to XPages for Administrators (DanNotes, November 28, 2012)
Intro to XPages for Administrators (DanNotes, November 28, 2012)Intro to XPages for Administrators (DanNotes, November 28, 2012)
Intro to XPages for Administrators (DanNotes, November 28, 2012)
 
Ad109 - XPages Performance and Scalability
Ad109 - XPages Performance and ScalabilityAd109 - XPages Performance and Scalability
Ad109 - XPages Performance and Scalability
 
How to generate customized java 8 code from your database
How to generate customized java 8 code from your databaseHow to generate customized java 8 code from your database
How to generate customized java 8 code from your database
 
Silicon Valley JUG - How to generate customized java 8 code from your database
Silicon Valley JUG - How to generate customized java 8 code from your databaseSilicon Valley JUG - How to generate customized java 8 code from your database
Silicon Valley JUG - How to generate customized java 8 code from your database
 
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
 
JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...
JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...
JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...
 
AngularJS 1.x - your first application (problems and solutions)
AngularJS 1.x - your first application (problems and solutions)AngularJS 1.x - your first application (problems and solutions)
AngularJS 1.x - your first application (problems and solutions)
 
What’s new for Developers in IBM Domino & Domino Designer 9.0.1
What’s new for Developers in IBM Domino & Domino Designer 9.0.1What’s new for Developers in IBM Domino & Domino Designer 9.0.1
What’s new for Developers in IBM Domino & Domino Designer 9.0.1
 
React native introduction (Mobile Warsaw)
React native introduction (Mobile Warsaw)React native introduction (Mobile Warsaw)
React native introduction (Mobile Warsaw)
 
JavascriptMVC: Another choice of web framework
JavascriptMVC: Another choice of web frameworkJavascriptMVC: Another choice of web framework
JavascriptMVC: Another choice of web framework
 
Nodejs
NodejsNodejs
Nodejs
 
Ad108 - XPages in the IBM Lotus Notes Client - A Deep Dive!
Ad108 - XPages in the IBM Lotus Notes Client - A Deep Dive!Ad108 - XPages in the IBM Lotus Notes Client - A Deep Dive!
Ad108 - XPages in the IBM Lotus Notes Client - A Deep Dive!
 
Spring Update | July 2023
Spring Update | July 2023Spring Update | July 2023
Spring Update | July 2023
 
Real World Java Compatibility
Real World Java CompatibilityReal World Java Compatibility
Real World Java Compatibility
 
Graal Tutorial at CGO 2015 by Christian Wimmer
Graal Tutorial at CGO 2015 by Christian WimmerGraal Tutorial at CGO 2015 by Christian Wimmer
Graal Tutorial at CGO 2015 by Christian Wimmer
 
Treinamento frontend
Treinamento frontendTreinamento frontend
Treinamento frontend
 
Java script Session No 1
Java script Session No 1Java script Session No 1
Java script Session No 1
 

Plus de ddrschiw

AD114 -- Beyond the Mobile Browser? Building Rich Mobile Applications for IBM...
AD114 -- Beyond the Mobile Browser? Building Rich Mobile Applications for IBM...AD114 -- Beyond the Mobile Browser? Building Rich Mobile Applications for IBM...
AD114 -- Beyond the Mobile Browser? Building Rich Mobile Applications for IBM...ddrschiw
 
Ad107 - Enhance Your Existing Applications with XPages
Ad107 - Enhance Your Existing Applications with XPagesAd107 - Enhance Your Existing Applications with XPages
Ad107 - Enhance Your Existing Applications with XPagesddrschiw
 
Ad106 - XPages Just Keep Getting Better
Ad106 - XPages Just Keep Getting BetterAd106 - XPages Just Keep Getting Better
Ad106 - XPages Just Keep Getting Betterddrschiw
 
Ad103 - Have it Your Way: Extending IBM Lotus Domino Designer
Ad103 - Have it Your Way: Extending IBM Lotus Domino DesignerAd103 - Have it Your Way: Extending IBM Lotus Domino Designer
Ad103 - Have it Your Way: Extending IBM Lotus Domino Designerddrschiw
 
Ad102 - Extreme Makeover -- LotusScript and Java Editor Edition
Ad102 - Extreme Makeover -- LotusScript and Java Editor EditionAd102 - Extreme Makeover -- LotusScript and Java Editor Edition
Ad102 - Extreme Makeover -- LotusScript and Java Editor Editionddrschiw
 
Ad101 - IBM Lotus Domino Designer: Full Speed Ahead!
Ad101 - IBM Lotus Domino Designer: Full Speed Ahead!Ad101 - IBM Lotus Domino Designer: Full Speed Ahead!
Ad101 - IBM Lotus Domino Designer: Full Speed Ahead!ddrschiw
 
Ad110 - Unleash the Power of Xpages
Ad110 - Unleash the Power of XpagesAd110 - Unleash the Power of Xpages
Ad110 - Unleash the Power of Xpagesddrschiw
 
LotusSphere 2010 - Leveraging IBM Lotus® Forms™ with IBM WebSphere® Process S...
LotusSphere 2010 - Leveraging IBM Lotus® Forms™ with IBM WebSphere® Process S...LotusSphere 2010 - Leveraging IBM Lotus® Forms™ with IBM WebSphere® Process S...
LotusSphere 2010 - Leveraging IBM Lotus® Forms™ with IBM WebSphere® Process S...ddrschiw
 
Webform Server 351 Architecture and Overview
Webform Server 351 Architecture and OverviewWebform Server 351 Architecture and Overview
Webform Server 351 Architecture and Overviewddrschiw
 
Introduction To IBM Lotus Forms Viewer
Introduction To IBM Lotus Forms ViewerIntroduction To IBM Lotus Forms Viewer
Introduction To IBM Lotus Forms Viewerddrschiw
 
Building A Cool Web 2.0 Application With XPages
Building A Cool Web 2.0 Application With XPagesBuilding A Cool Web 2.0 Application With XPages
Building A Cool Web 2.0 Application With XPagesddrschiw
 
Domino X Pages
Domino X PagesDomino X Pages
Domino X Pagesddrschiw
 
Lotus Forms Webform Server 3.0 Overview & Architecture
Lotus Forms Webform Server 3.0 Overview & ArchitectureLotus Forms Webform Server 3.0 Overview & Architecture
Lotus Forms Webform Server 3.0 Overview & Architectureddrschiw
 
Lotus Forms Webform Server 3.0 Overview & Architecture
Lotus Forms Webform Server 3.0 Overview & ArchitectureLotus Forms Webform Server 3.0 Overview & Architecture
Lotus Forms Webform Server 3.0 Overview & Architectureddrschiw
 

Plus de ddrschiw (15)

AD114 -- Beyond the Mobile Browser? Building Rich Mobile Applications for IBM...
AD114 -- Beyond the Mobile Browser? Building Rich Mobile Applications for IBM...AD114 -- Beyond the Mobile Browser? Building Rich Mobile Applications for IBM...
AD114 -- Beyond the Mobile Browser? Building Rich Mobile Applications for IBM...
 
Ad107 - Enhance Your Existing Applications with XPages
Ad107 - Enhance Your Existing Applications with XPagesAd107 - Enhance Your Existing Applications with XPages
Ad107 - Enhance Your Existing Applications with XPages
 
Ad106 - XPages Just Keep Getting Better
Ad106 - XPages Just Keep Getting BetterAd106 - XPages Just Keep Getting Better
Ad106 - XPages Just Keep Getting Better
 
Ad103 - Have it Your Way: Extending IBM Lotus Domino Designer
Ad103 - Have it Your Way: Extending IBM Lotus Domino DesignerAd103 - Have it Your Way: Extending IBM Lotus Domino Designer
Ad103 - Have it Your Way: Extending IBM Lotus Domino Designer
 
Ad102 - Extreme Makeover -- LotusScript and Java Editor Edition
Ad102 - Extreme Makeover -- LotusScript and Java Editor EditionAd102 - Extreme Makeover -- LotusScript and Java Editor Edition
Ad102 - Extreme Makeover -- LotusScript and Java Editor Edition
 
Ad101 - IBM Lotus Domino Designer: Full Speed Ahead!
Ad101 - IBM Lotus Domino Designer: Full Speed Ahead!Ad101 - IBM Lotus Domino Designer: Full Speed Ahead!
Ad101 - IBM Lotus Domino Designer: Full Speed Ahead!
 
Ad110 - Unleash the Power of Xpages
Ad110 - Unleash the Power of XpagesAd110 - Unleash the Power of Xpages
Ad110 - Unleash the Power of Xpages
 
LotusSphere 2010 - Leveraging IBM Lotus® Forms™ with IBM WebSphere® Process S...
LotusSphere 2010 - Leveraging IBM Lotus® Forms™ with IBM WebSphere® Process S...LotusSphere 2010 - Leveraging IBM Lotus® Forms™ with IBM WebSphere® Process S...
LotusSphere 2010 - Leveraging IBM Lotus® Forms™ with IBM WebSphere® Process S...
 
Webform Server 351 Architecture and Overview
Webform Server 351 Architecture and OverviewWebform Server 351 Architecture and Overview
Webform Server 351 Architecture and Overview
 
Introduction To IBM Lotus Forms Viewer
Introduction To IBM Lotus Forms ViewerIntroduction To IBM Lotus Forms Viewer
Introduction To IBM Lotus Forms Viewer
 
Building A Cool Web 2.0 Application With XPages
Building A Cool Web 2.0 Application With XPagesBuilding A Cool Web 2.0 Application With XPages
Building A Cool Web 2.0 Application With XPages
 
Domino X Pages
Domino X PagesDomino X Pages
Domino X Pages
 
Mlb Demo1
Mlb Demo1Mlb Demo1
Mlb Demo1
 
Lotus Forms Webform Server 3.0 Overview & Architecture
Lotus Forms Webform Server 3.0 Overview & ArchitectureLotus Forms Webform Server 3.0 Overview & Architecture
Lotus Forms Webform Server 3.0 Overview & Architecture
 
Lotus Forms Webform Server 3.0 Overview & Architecture
Lotus Forms Webform Server 3.0 Overview & ArchitectureLotus Forms Webform Server 3.0 Overview & Architecture
Lotus Forms Webform Server 3.0 Overview & Architecture
 

Dernier

Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 

Dernier (20)

Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 

Ad111

  • 1. AD111 Harnessing the Power of Server-Side JavaScript and Other Advanced XPage Techniques Tim Tripcony | GROUP Experts - XMage Stephan H. Wissel | IBM - Lotus Technology & Productivity Advisor
  • 2. Agenda ● What exactly is Server Side Java Script (SSJS) ● Common practices: pattern & anti-pattern ● Code samples The REAL Agenda: code, code, code 2
  • 3. Server-side JavaScript is JavaScript ● all ECMAScript 3 keywords, operators and syntax still apply ▬ var myNumber = 0; ▬ var myArray = [ ]; // preferred over new Array(); ▬ var myObject = { }; // preferred over new Object(); ▬ function foo(){return "bar";} ▬ var depends = someBoolean ? "default" : "other"; ● ECMAScript scope rules apply, including closure ▬ More in the Demo section 3
  • 4. Server-side JavaScript is not JavaScript (1) ● browser-specific globals not available ▬ window ▬ document ▬ location ● Platform-specific globals and JSF-specifics ▬ session: current NotesSession ▬ database: current NotesDatabase, equal to session.getCurrentDatabase() ▬ param: URL parameters and post data ▬ context & facesContext: current state data and direct access to servlet engine 4
  • 5. Server-side JavaScript is not JavaScript (2) ● @functions (e.g. @UserName() ) ● scope variables ▬ requestScope ▬ viewScope ▬ sessionScope ▬ applicationScope ● Optional type declarations ● Seamless Java™ integration 5
  • 6. Agenda ● What exactly is Server Side Java Script (SSJS) ● Common practices: pattern & anti-pattern ● Code samples 6
  • 7. The use of context ● getUser(): access to name, roles, groups, and more ● getUrl(): no more String parsing to get query string parameters and other URL info ● getUserAgent(): server-side browser detection ● redirectToPage() / redirectToHome(): easy programmatic navigation 7
  • 8. The use of facesContext ● getResponseWriter() / getResponseStream(): send your own output to the browser (like Print in LotusScript) ● getExternalContext(): direct access to the servlet ▬ getRequest() ▬ GetResponse() ● You need to understand the difference between the ResponseWriter and ResponseStream ▬ Writer doesn't take binary data ▬ Stream excludes Writer ▬ Can only use one per request
  • 9. JavaScript Closures ● An object returned from a function has access to variables defined within that function ▬ Includes arguments passed to the function ● This allows for OOP constructs in JavaScript objects ▬ Private properties ▬ Private functions ▬ Inheritance without .prototype 9
  • 10. Take advantage of XPages' JSF heritage ● Java Objects at your disposal ▬ java.util: powerful storage and iteration ▬ java.net: easy access to remote data ▬ Core JSF packages and IBM's implementation ● Get to the servlet ● Write your own servlet (you are on your own here) 10
  • 11. Write agent Style code in XPages ● Control the rendering ● Get the output writer ● Get the output stream (one of the two) ● Use cases: ▬ Replace web agent (?OpenAgent) ▬ Output other formats (PDF, ODF) 11
  • 12. The use of scope ● requestScope: storage for anything needed multiple times in the same HTTP request ● viewScope: survives for the life of a page - including partial and full refresh events ● sessionScope: "shopping cart" storage - survives for the duration of a user's session, BUT can expire even if the user is still logged in (set in application properties to balance server performance with application performance) ● applicationScope: storage shared among all users of the NSF - any data that numerous users are likely to need but shouldn't be queried on every request 12
  • 13. Anti-Pattern: What always goes wrong ● The network is fast and reliable ● Configuration parameters are retrieved through @DBLookup ● Connect to JDBC without a session pool ● Use data binding when you access data, not anything else 13
  • 14. Everybody's favorite objects ● UI Elements ▬ Create a control programmatically ▬ Update control properties via event handlers ● DOMUtil ▬ Parse DXL and other XML ● cookie ▬ Set and read cookies using .put() and .get() 14
  • 15. Error Handling ● try/catch: provide individual operations that might fail a specific response to failure ● Enable “Display default error page” during development and testing ● Create custom error pages to display uncaught exceptions 15
  • 16. Debugging ● print(): send a single String statement to server log and console ● _dump(): send detailed info about any object to log and console 16
  • 17. Unit Tests ● Courtesy of Lorcan McDonald (IBM Lab Dublin) ● Available on OpenNTF ● Enables Test Driven Development (get used to it) http://openntf.org/internal/ontfcatalog.nsf/topicThread.xsp?action=openDocument&documentId=9C66A4F3854E61BE852575A1003C6CAD 17
  • 18. Reaching out to Java ● Put source into webcontent/source ● Add directory to Java build path ● Package name required ● Define like a JavaScript variable: var xy = new com.acme.RoadRunner(); xy.foolCoyote(“Meep Meep”); 18
  • 19. Managed Beans ● Concept inherited from JSF underpinnings ● Bean is described in XML declaration ● Can be used in JavaScript expressions ● Automatically loaded when needed ● Bound to a specific scope ● Take advantage of Java capabilities (e.g. Connection pooling, threading etc) 19
  • 20. Agenda ● What exactly is Server Side Java Script (SSJS) ● Common practices: pattern & anti-pattern ● Code samples 20
  • 21. Application Chat ● Application Context ● Synchronized Access ● Closure ● Periodic partial refresh 21
  • 22. Shopping Cart ● Session Context ● Closure ● Java integration 22
  • 23. Cached Search ● Application Context ● Managed Bean ● Network handling 23
  • 24. Q&A 24
  • 25. Legal Disclaimer ● © IBM Corporation 2009. All Rights Reserved. The information contained in this publication is provided for informational purposes only. While efforts were made to verify the completeness and accuracy of the information contained in this publication, it is provided AS IS without warranty of any kind, express or implied. In addition, this information is based on IBM’s current product plans and strategy, which are subject to change by IBM without notice. IBM shall not be responsible for any damages arising out of the use of, or otherwise related to, this publication or any other materials. Nothing contained in this publication is intended to, nor shall have the effect of, creating any warranties or representations from IBM or its suppliers or licensors, or altering the terms and conditions of the applicable license agreement governing the use of IBM software. References in this presentation to IBM products, programs, or services do not imply that they will be available in all countries in which IBM operates. Product release dates and/or capabilities referenced in this presentation may change at any time at IBM’s sole discretion based on market opportunities or other factors, and are not intended to be a commitment to future product or feature availability in any way. Nothing contained in these materials is intended to, nor shall have the effect of, stating or implying that any activities undertaken by you will result in any specific sales, revenue growth or other results. IBM, the IBM logo, Lotus, and Lotusphere are trademarks of International Business Machines Corporation in the United States, other countries, or both. Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both. All references to ACME refer to a fictitious company and are used for illustration purposes only. 25