SlideShare a Scribd company logo
The power of DOTS




 Frank van der Linden, e-office
Frank van der Linden & e-office




  @flinden68


  http://www.domino-weblog.nl


  nl.linkedin.com/in/flinden68

  fli@e-office.com
Roadmap
   Introduction
   Setup your environment
   My first DOTS tasklet
   Debug the DOTS tasklet
   Deploy the DOTS tasklet
   Tips and tricks
Introduction
Introduction of OSGi
 Open Services Gateway initiative
   – Started in 1999
   – Still improved
   – module system and service platform
 OSGi bundles
   – Can be installed remotely.
   – No reboot required
   – Lifecycle
Introduction of OSGi
 OSGi and IBM Notes/Domino                         9+
   –   Since 8.5.2
   –   Extension points
   –   Extension Library
   –   DOTS (Domino OSGi Tasklet Service)
   –   OpenSocial Container

                                            8.5.3



                                            8.5.2
Introduction of DOTS
 Domino OSGi Tasklet Service
   – Easy development
   – Outside in Eclipse IDE
   – Tasklets can run: scheduled, manual
 Next generation agents for Domino
 OpenNTF project by IBM since April, 2011 (replaced JAVADDIN project)
 Included in IBM Domino 9 Social Edition
Introduction of DOTS
Introduction of DOTS
 DOTS Tasklets outperforms over Java Agents!


                                        AMGR                                    Prepare Java
                                                               JVM                                Load Agent
         Java Agent:                  launches a
                                                            Initializes
                                                                                   and JNI
                                                                                                   Bytecode
                                                                                                               Run!
                                        Thread                                   interfaces


                                                                                                               Run!
      DOTS tasklet:
                                                     Everything is ready to run



   > tell amgr run "testXPagescrash.nsf" 'LongJobAgent'
   09.11.2012 19:38:39 JVM: Java Virtual Machine initialized.
   09.11.2012 19:38:39 AMgr: Start executing agent 'LongJobAgent' in 'testXPagescrash.nsf'
   09.11.2012 19:38:39 Agent Manager: Agent printing: 181349
   09.11.2012 19:41:02 Agent Manager: Agent printing: 2227
   09.11.2012 19:41:02 Agent Manager: Agent printing: Finished in 143 secs... -
   09.11.2012 19:41:02 AMgr: Agent 'LongJobAgent' in 'testXPagescrash.nsf' completed execution




   > load dots
   > Listening for transport dt_socket at address: 8001
   09.11.2012 19:42:40 Domino OSGi Tasklet Container started ( profile DOTS )
   > 181349
   > 2227
   09.11.2012 19:43:22 [DOTS] (annotated) Finished in 41 secs...
Introduction of DOTS
 DOTS versus Agents
   – AMGR is old and complicated
   – Range
       ̶ Agents are database depended
        ̶ DOTS run server wide
   – DOTS are more flexible
         ̶ Precise timing
Setup your environment
Setup your environment
 DOTS should be installed into a local IBM Domino server
   – For IBM Domino 9 Social Edition Public Beta, you don’t need to do anything.
   – For versions 8.5.2 and 8.5.3,
       ̶ Download DOTS package from OpenNTF
        ̶ You will also need some Eclipse plugins from Eclipse 3.6.2+
Setup your environment
 Create some folders inside your Domino folder
    – [Domino Program Files]osgi-dotsrcpeclipseplugins
    – [Domino Program Files]osgi-dotssharedeclipseplugins
 Copy files from Eclipse install directory



                                                           These plugins will be
                                                           copied from Eclipse
                                                           installation

                                                           [Eclipse]plugins
Setup your environment
 The DOTS package contains the executables
   – The jar files in the newly created directories
   – The executables in the Domino program directory




                                                       Copy to

                                                       [Domino]osgi-dotssharedeclipseplugins




                                                        Copy to

                                                        [Domino]osgi-dots
Setup your environment
 Download Eclipse
   – http://www.eclipse.org/downloads
   – Eclipse >3.6.2(Eclipse IDE for Java EE Developers)
 Download projects from OpenNTF
   – Domino Debug Plug-in from XPages SDK for Eclipse RCP:
     http://tiny.cc/XPagesSDK
Setup the Domino Debug Plugin




   Accept all next steps
   Restart Eclipse
Setup the Domino Debug Plugin
 Check Prefences,if Domino Debug Plugin is installed
Setup the target platform



                      [Domino Program Files]osgi-dotsrcpeclipse

                      [Domino Program Files]osgi-dotssharedeclipse
Setup the Notes Java Api reference
My first DOTS tasklet
My First DOTS tasklet
 Create a new Plug-in Project
   – File  New  Plug-in Project
My First DOTS tasklet
 Prepare the DOTS extensions
My First DOTS tasklet
 Import DOTS extensions
   – Deselect «Show only extension points from the required plug-ins»
   – Find & pick «com.ibm.dots.task» extension from the list
   – Correct the warning in the Manifest.mf tab, then Save & Close Manifest
     view.
My First DOTS tasklet
 Import Domino package
My First DOTS tasklet
 Create the Java class
My First DOTS tasklet
 Add some code.In this case a log statement, which will printed to the console.
My First DOTS tasklet
 Modify the plugin.xml




                                 name of the class




                          tasklet id
My First DOTS tasklet
 Now we can run our tasklet
 DOTS will run on the Domino server.
 There are two ways to run from Eclipse IDE
   – Run
   – Run and debug
My First DOTS tasklet
 Create a “run configuration”
My First DOTS tasklet
 PDE Configuration file should be created, the first time
 PDE file is created in the dots workspace
My First DOTS tasklet
 Now, lets run the tasklet
Debug the DOTS Tasklet
Debug the DOTS Tasklet
 Stop DOTS task
   – Tell dots quit
 Adding debug parameters to notes.ini
    –     DOTS_DEBUGADDRESS=8001
    –     DOTS_DEBUGSUSPEND=y
 Reload DOTS task
   – Load dots
   – Dots task will start only when debugger connects
Debug the DOTS Tasklet
 Server needs to know what to debug
Debug the DOTS Tasklet
 Adding breakpoint to debug the code
Deploy the DOTS tasklet
Deploy your tasklet

 DOTS plugins can be deployed as OSGi bundle
   – As jar file in OSGi plugins folder
   – As update site
 Disable debug parameters
   – Delete PDE runtime configuration (pde.launch.ini)
   – Disable suspend feature in debugging (DOTS_DEBUGSUSPEND)
Deploy the DOTS Tasklet

 Create a jar file from the plugin
    ̶   Right Click  Export  Deployable plug-ins and fragments...
Deploy the DOTS Tasklet

 Select the plugin and destination
 Place exported JAR file into plugins folder, then restart DOTS task

     [Domino Program Files]osgi-dotssharedeclipseplugins
Deploy the DOTS Tasklet
 Another deploy method, DOTS profiles
   –   It can stored inside a Notes database
   –   Can run in is own profile container
   –   With his own security settings
   –   Can started seperatly “tell profilename run abc”
Deploy the DOTS Tasklet
 Creating Profile Repository as NSF
   – Create an empty Notes database, set ACL as required
   – Configure DOTS to use profiles database
        ̶   tell dots quit
        ̶   set config OSGI_CONFIGURATION_DB=dotsprofiles.nsf
        ̶   load dots
        ̶   tell dots profileCreate dots

   –   DOTS profile is created




   – You can import an updatesite in the profile
Deploy the DOTS Tasklet
 Create a Feature project in Eclipse
Deploy the DOTS Tasklet
 Create the update site project in Eclipse
Deploy the DOTS Tasklet
 Build the update site project
Deploy the DOTS Tasklet
 Create an Update Site Database
Deploy the DOTS Tasklet
 Open OSGi profile db
   – Add update site database into Sites section
 Restart DOTS task
Tips and tricks
Tips and tricks
 Some tips
   – Schedule tasks



   – OSGi allows you to refresh bundles without restart, here is how:
      ̶ Find out the «bundle-id» for the plug-in
       ̶ Refresh the bundle
Tips and tricks
  More tips...Annotations
       – Annotations is supported in DOTS.
       – Powerfull way of specify for each method, what to do




@RunOnStart
public void runOnStart( IProgressMonitor monitor ){
        logMessage("Annotated onStart method");
}

@Run( id="manual")
public void runManual( String[] args, IProgressMonitor monitor ){
        logMessage("Annotated run method with id=manual");
}

@RunOnStart
@RunEvery( every=60, unit=RunUnit.second )
@HungPossibleAfter( timeInMinutes=1 )
public void runEvery60seconds( IProgressMonitor monitor ){
        logMessage( "Called from annotated method every 60 seconds");
}
Multiple profiles
 You may create more than one profiles.
   –   For testing
   –   Tasklets that you use occasionally
   –   Tasklets with different security needs
   –   Heavily loaded Tasklets
Life-cycle for a scheduled Tasklet

   When a tasklet runs on schedule, DOTS class loader will create an instance from your tasklet class. This
    instance will not be disposed until DOTS process stops.
Multiple purpose Tasklet
 Same Tasklet, different Java instances
 In multiple scheduled runs
   – persistent objects, stays in memory
 In multiple manual runs
   – unloaded from memory afterwards
Tips and tricks

   Logging
     – Try not to use System.out.println. (No output to
       log.nsf)
     – Instead, use logMessage(...) and
       logException(...)
   Progress Monitoring
     – IProgressMonitor monitor argument passed on tasklet   Vector<?> views = db.getViews();

       methods.                                              monitor.beginTask( "List the views",
                                                             views.size() ); Init with # of steps
     – Very useful for tasklets running long time.
                                                             for ( Object view : views ){
                                                                            if ( monitor.isCanceled() ){
                                                                                           break;
                                                                                                          
                                                             Break if canceled.
                                                                            }
                                                                            logMessage("t" +
                                                             ((View)view).getName() );
                                                                            try {
                                                                                           Thread.sleep( 1000
                                                             );
                                                                            } catch (InterruptedException e)
                                                             {

                                                                            e.printStackTrace();
                                                                            }
                                                                            monitor.worked( 1 );
                                                                                            One step
                                                             completed
                                                             }
Questions
Contact details

    @flinden68


    http://www.domino-weblog.nl


    nl.linkedin.com/in/flinden68


    fli@e-office.com

More Related Content

What's hot

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
Paul Withers
 
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
 
Concierge - Bringing OSGi (back) to Embedded Devices
Concierge - Bringing OSGi (back) to Embedded DevicesConcierge - Bringing OSGi (back) to Embedded Devices
Concierge - Bringing OSGi (back) to Embedded Devices
Jan S. Rellermeyer
 
Managing Change
Managing ChangeManaging Change
Managing Change
Mirko Jahn
 
Tribal Nova Docker feedback
Tribal Nova Docker feedbackTribal Nova Docker feedback
Tribal Nova Docker feedback
Nicolas Degardin
 
DOAG 2011 - Upgrade Guide for Oracle ADF on WebLogic Server
DOAG 2011 - Upgrade Guide for Oracle ADF on WebLogic ServerDOAG 2011 - Upgrade Guide for Oracle ADF on WebLogic Server
DOAG 2011 - Upgrade Guide for Oracle ADF on WebLogic ServerAndreas Koop
 
Dd13.2013.milano.open ntf
Dd13.2013.milano.open ntfDd13.2013.milano.open ntf
Dd13.2013.milano.open ntfUlrich Krause
 
Domino on docker version 1
Domino on docker version 1Domino on docker version 1
Domino on docker version 1
Slobodan Lohja
 
Improving Engineering Processes using Hudson - Spark IT 2010
Improving Engineering Processes using Hudson - Spark IT 2010Improving Engineering Processes using Hudson - Spark IT 2010
Improving Engineering Processes using Hudson - Spark IT 2010
Arun Gupta
 
OSGi-enabled Java EE Applications using GlassFish
OSGi-enabled Java EE Applications using GlassFishOSGi-enabled Java EE Applications using GlassFish
OSGi-enabled Java EE Applications using GlassFish
Arun Gupta
 
Project Zero For Javapolis 2007
Project Zero For Javapolis 2007Project Zero For Javapolis 2007
Project Zero For Javapolis 2007
Jason McGee
 
Rami Sayar - Node microservices with Docker
Rami Sayar - Node microservices with DockerRami Sayar - Node microservices with Docker
Rami Sayar - Node microservices with Docker
Web à Québec
 
Sleep Peacefully as Maven Tycho Builds your Product
Sleep Peacefully as Maven Tycho Builds your ProductSleep Peacefully as Maven Tycho Builds your Product
Sleep Peacefully as Maven Tycho Builds your Product
Subramanyam C
 
Java Developer Intro to Environment Management with Vagrant, Puppet, and Dock...
Java Developer Intro to Environment Management with Vagrant, Puppet, and Dock...Java Developer Intro to Environment Management with Vagrant, Puppet, and Dock...
Java Developer Intro to Environment Management with Vagrant, Puppet, and Dock...
Lucas Jellema
 
Jalimo Slides Linuxtag2007 (English)
Jalimo Slides Linuxtag2007 (English)Jalimo Slides Linuxtag2007 (English)
Jalimo Slides Linuxtag2007 (English)
smancke
 
Hudson at FISL 2009
Hudson at FISL 2009Hudson at FISL 2009
Hudson at FISL 2009
Arun Gupta
 
Using Docker to build and test in your laptop and Jenkins
Using Docker to build and test in your laptop and JenkinsUsing Docker to build and test in your laptop and Jenkins
Using Docker to build and test in your laptop and Jenkins
Micael Gallego
 
OpenSolaris Introduction
OpenSolaris IntroductionOpenSolaris Introduction
OpenSolaris Introduction
satyajit_t
 
Puppet and Telefonica R&D
Puppet and Telefonica R&DPuppet and Telefonica R&D
Puppet and Telefonica R&D
Puppet
 
Jetty Vs Tomcat
Jetty Vs TomcatJetty Vs Tomcat
Jetty Vs Tomcat
Tomoaki Sawada
 

What's hot (20)

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
 
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...
 
Concierge - Bringing OSGi (back) to Embedded Devices
Concierge - Bringing OSGi (back) to Embedded DevicesConcierge - Bringing OSGi (back) to Embedded Devices
Concierge - Bringing OSGi (back) to Embedded Devices
 
Managing Change
Managing ChangeManaging Change
Managing Change
 
Tribal Nova Docker feedback
Tribal Nova Docker feedbackTribal Nova Docker feedback
Tribal Nova Docker feedback
 
DOAG 2011 - Upgrade Guide for Oracle ADF on WebLogic Server
DOAG 2011 - Upgrade Guide for Oracle ADF on WebLogic ServerDOAG 2011 - Upgrade Guide for Oracle ADF on WebLogic Server
DOAG 2011 - Upgrade Guide for Oracle ADF on WebLogic Server
 
Dd13.2013.milano.open ntf
Dd13.2013.milano.open ntfDd13.2013.milano.open ntf
Dd13.2013.milano.open ntf
 
Domino on docker version 1
Domino on docker version 1Domino on docker version 1
Domino on docker version 1
 
Improving Engineering Processes using Hudson - Spark IT 2010
Improving Engineering Processes using Hudson - Spark IT 2010Improving Engineering Processes using Hudson - Spark IT 2010
Improving Engineering Processes using Hudson - Spark IT 2010
 
OSGi-enabled Java EE Applications using GlassFish
OSGi-enabled Java EE Applications using GlassFishOSGi-enabled Java EE Applications using GlassFish
OSGi-enabled Java EE Applications using GlassFish
 
Project Zero For Javapolis 2007
Project Zero For Javapolis 2007Project Zero For Javapolis 2007
Project Zero For Javapolis 2007
 
Rami Sayar - Node microservices with Docker
Rami Sayar - Node microservices with DockerRami Sayar - Node microservices with Docker
Rami Sayar - Node microservices with Docker
 
Sleep Peacefully as Maven Tycho Builds your Product
Sleep Peacefully as Maven Tycho Builds your ProductSleep Peacefully as Maven Tycho Builds your Product
Sleep Peacefully as Maven Tycho Builds your Product
 
Java Developer Intro to Environment Management with Vagrant, Puppet, and Dock...
Java Developer Intro to Environment Management with Vagrant, Puppet, and Dock...Java Developer Intro to Environment Management with Vagrant, Puppet, and Dock...
Java Developer Intro to Environment Management with Vagrant, Puppet, and Dock...
 
Jalimo Slides Linuxtag2007 (English)
Jalimo Slides Linuxtag2007 (English)Jalimo Slides Linuxtag2007 (English)
Jalimo Slides Linuxtag2007 (English)
 
Hudson at FISL 2009
Hudson at FISL 2009Hudson at FISL 2009
Hudson at FISL 2009
 
Using Docker to build and test in your laptop and Jenkins
Using Docker to build and test in your laptop and JenkinsUsing Docker to build and test in your laptop and Jenkins
Using Docker to build and test in your laptop and Jenkins
 
OpenSolaris Introduction
OpenSolaris IntroductionOpenSolaris Introduction
OpenSolaris Introduction
 
Puppet and Telefonica R&D
Puppet and Telefonica R&DPuppet and Telefonica R&D
Puppet and Telefonica R&D
 
Jetty Vs Tomcat
Jetty Vs TomcatJetty Vs Tomcat
Jetty Vs Tomcat
 

Viewers also liked

Bacterial resistance mechanisms and new trends for resistance overcoming
Bacterial resistance mechanisms and new trends for resistance overcoming Bacterial resistance mechanisms and new trends for resistance overcoming
Bacterial resistance mechanisms and new trends for resistance overcoming
Mohammed Fawzy
 
Aminoglycosides antibiotics
Aminoglycosides antibioticsAminoglycosides antibiotics
Aminoglycosides antibiotics
Swornim Gyawali
 
Aminoglycosides
AminoglycosidesAminoglycosides
Aminoglycosides
Md. Atiqur Rahman
 
Aminoglycoside ppt
Aminoglycoside pptAminoglycoside ppt
Aminoglycoside ppt
neetu ojha
 
ANTI-HELMINTHIC DRUGS
ANTI-HELMINTHIC DRUGSANTI-HELMINTHIC DRUGS
ANTI-HELMINTHIC DRUGSshrinathraman
 
Sulfonamides and trimethoprim
Sulfonamides and trimethoprimSulfonamides and trimethoprim
Sulfonamides and trimethoprim
Subramani Parasuraman
 
Antibiotic resistance
Antibiotic resistanceAntibiotic resistance
Antibiotic resistance
Sulav Shrestha
 
Antibiotic resistance
Antibiotic resistance Antibiotic resistance
Antibiotic resistance
Naser Tadvi
 

Viewers also liked (13)

Dots
DotsDots
Dots
 
4.Dots
4.Dots4.Dots
4.Dots
 
Bacterial resistance mechanisms and new trends for resistance overcoming
Bacterial resistance mechanisms and new trends for resistance overcoming Bacterial resistance mechanisms and new trends for resistance overcoming
Bacterial resistance mechanisms and new trends for resistance overcoming
 
Aminoglycosides antibiotics
Aminoglycosides antibioticsAminoglycosides antibiotics
Aminoglycosides antibiotics
 
Aminoglycosides
AminoglycosidesAminoglycosides
Aminoglycosides
 
Aminoglycoside ppt
Aminoglycoside pptAminoglycoside ppt
Aminoglycoside ppt
 
Sulfonamides
SulfonamidesSulfonamides
Sulfonamides
 
ANTI-HELMINTHIC DRUGS
ANTI-HELMINTHIC DRUGSANTI-HELMINTHIC DRUGS
ANTI-HELMINTHIC DRUGS
 
Sulfonamides(1)
Sulfonamides(1)Sulfonamides(1)
Sulfonamides(1)
 
Sulfonamides and trimethoprim
Sulfonamides and trimethoprimSulfonamides and trimethoprim
Sulfonamides and trimethoprim
 
Antibiotic resistance
Antibiotic resistanceAntibiotic resistance
Antibiotic resistance
 
Antibiotic resistance
Antibiotic resistance Antibiotic resistance
Antibiotic resistance
 
Urinary tract infections
Urinary tract infectionsUrinary tract infections
Urinary tract infections
 

Similar to The power of dots

Let me introduce you: DOTS
Let me introduce you: DOTSLet me introduce you: DOTS
Let me introduce you: DOTS
Frank van der Linden
 
OpenNTF Webinar - October 2021: Return of the DOTS
OpenNTF Webinar - October 2021: Return of the DOTSOpenNTF Webinar - October 2021: Return of the DOTS
OpenNTF Webinar - October 2021: Return of the DOTS
Serdar Basegmez
 
Docker 101
Docker 101 Docker 101
Docker 101
Kevin Nord
 
Django simplified : by weever mbakaya
Django simplified : by weever mbakayaDjango simplified : by weever mbakaya
Django simplified : by weever mbakaya
Mbakaya Kwatukha
 
Containers, Docker, and Microservices: the Terrific Trio
Containers, Docker, and Microservices: the Terrific TrioContainers, Docker, and Microservices: the Terrific Trio
Containers, Docker, and Microservices: the Terrific Trio
Jérôme Petazzoni
 
Plug yourself in and your app will never be the same (1 hr edition)
Plug yourself in and your app will never be the same (1 hr edition)Plug yourself in and your app will never be the same (1 hr edition)
Plug yourself in and your app will never be the same (1 hr edition)
Mikkel Flindt Heisterberg
 
Os dev tool box
Os dev tool boxOs dev tool box
Os dev tool box
bpowell29a
 
Docker dev ops for cd meetup 12-14
Docker dev ops for cd meetup 12-14Docker dev ops for cd meetup 12-14
Docker dev ops for cd meetup 12-14
Simon Storm
 
GDG-ANDROID-ATHENS Meetup: Build in Docker with Jenkins
GDG-ANDROID-ATHENS Meetup: Build in Docker with Jenkins GDG-ANDROID-ATHENS Meetup: Build in Docker with Jenkins
GDG-ANDROID-ATHENS Meetup: Build in Docker with Jenkins
Mando Stam
 
Introduction to Docker for NodeJs developers at Node DC 2/26/2014
Introduction to Docker for NodeJs developers at Node DC 2/26/2014Introduction to Docker for NodeJs developers at Node DC 2/26/2014
Introduction to Docker for NodeJs developers at Node DC 2/26/2014
lenworthhenry
 
Dockerizing a Symfony2 application
Dockerizing a Symfony2 applicationDockerizing a Symfony2 application
Dockerizing a Symfony2 application
Roman Rodomansky
 
Domino on docker version 2
Domino on docker version 2Domino on docker version 2
Domino on docker version 2
Slobodan Lohja
 
Docker and stuff
Docker and stuffDocker and stuff
Docker and stuff
Varun Sharma
 
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
Paul Withers
 
A Fabric/Puppet Build/Deploy System
A Fabric/Puppet Build/Deploy SystemA Fabric/Puppet Build/Deploy System
A Fabric/Puppet Build/Deploy System
adrian_nye
 
Docker for Devs - John Zaccone, IBM
Docker for Devs - John Zaccone, IBMDocker for Devs - John Zaccone, IBM
Docker for Devs - John Zaccone, IBM
Docker, Inc.
 
Gitlab and Lingvokot
Gitlab and LingvokotGitlab and Lingvokot
Gitlab and Lingvokot
Lingvokot
 
From development environments to production deployments with Docker, Compose,...
From development environments to production deployments with Docker, Compose,...From development environments to production deployments with Docker, Compose,...
From development environments to production deployments with Docker, Compose,...
Jérôme Petazzoni
 
Angular Optimization Web Performance Meetup
Angular Optimization Web Performance MeetupAngular Optimization Web Performance Meetup
Angular Optimization Web Performance Meetup
David Barreto
 
Intro to SpringBatch NoSQL 2021
Intro to SpringBatch NoSQL 2021Intro to SpringBatch NoSQL 2021
Intro to SpringBatch NoSQL 2021
Slobodan Lohja
 

Similar to The power of dots (20)

Let me introduce you: DOTS
Let me introduce you: DOTSLet me introduce you: DOTS
Let me introduce you: DOTS
 
OpenNTF Webinar - October 2021: Return of the DOTS
OpenNTF Webinar - October 2021: Return of the DOTSOpenNTF Webinar - October 2021: Return of the DOTS
OpenNTF Webinar - October 2021: Return of the DOTS
 
Docker 101
Docker 101 Docker 101
Docker 101
 
Django simplified : by weever mbakaya
Django simplified : by weever mbakayaDjango simplified : by weever mbakaya
Django simplified : by weever mbakaya
 
Containers, Docker, and Microservices: the Terrific Trio
Containers, Docker, and Microservices: the Terrific TrioContainers, Docker, and Microservices: the Terrific Trio
Containers, Docker, and Microservices: the Terrific Trio
 
Plug yourself in and your app will never be the same (1 hr edition)
Plug yourself in and your app will never be the same (1 hr edition)Plug yourself in and your app will never be the same (1 hr edition)
Plug yourself in and your app will never be the same (1 hr edition)
 
Os dev tool box
Os dev tool boxOs dev tool box
Os dev tool box
 
Docker dev ops for cd meetup 12-14
Docker dev ops for cd meetup 12-14Docker dev ops for cd meetup 12-14
Docker dev ops for cd meetup 12-14
 
GDG-ANDROID-ATHENS Meetup: Build in Docker with Jenkins
GDG-ANDROID-ATHENS Meetup: Build in Docker with Jenkins GDG-ANDROID-ATHENS Meetup: Build in Docker with Jenkins
GDG-ANDROID-ATHENS Meetup: Build in Docker with Jenkins
 
Introduction to Docker for NodeJs developers at Node DC 2/26/2014
Introduction to Docker for NodeJs developers at Node DC 2/26/2014Introduction to Docker for NodeJs developers at Node DC 2/26/2014
Introduction to Docker for NodeJs developers at Node DC 2/26/2014
 
Dockerizing a Symfony2 application
Dockerizing a Symfony2 applicationDockerizing a Symfony2 application
Dockerizing a Symfony2 application
 
Domino on docker version 2
Domino on docker version 2Domino on docker version 2
Domino on docker version 2
 
Docker and stuff
Docker and stuffDocker and stuff
Docker and stuff
 
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
 
A Fabric/Puppet Build/Deploy System
A Fabric/Puppet Build/Deploy SystemA Fabric/Puppet Build/Deploy System
A Fabric/Puppet Build/Deploy System
 
Docker for Devs - John Zaccone, IBM
Docker for Devs - John Zaccone, IBMDocker for Devs - John Zaccone, IBM
Docker for Devs - John Zaccone, IBM
 
Gitlab and Lingvokot
Gitlab and LingvokotGitlab and Lingvokot
Gitlab and Lingvokot
 
From development environments to production deployments with Docker, Compose,...
From development environments to production deployments with Docker, Compose,...From development environments to production deployments with Docker, Compose,...
From development environments to production deployments with Docker, Compose,...
 
Angular Optimization Web Performance Meetup
Angular Optimization Web Performance MeetupAngular Optimization Web Performance Meetup
Angular Optimization Web Performance Meetup
 
Intro to SpringBatch NoSQL 2021
Intro to SpringBatch NoSQL 2021Intro to SpringBatch NoSQL 2021
Intro to SpringBatch NoSQL 2021
 

More from Frank van der Linden

Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The Ugly
Frank van der Linden
 
Engage 2020: Hello are you listening, There is stream for everything
Engage 2020: Hello are you listening, There is stream for everythingEngage 2020: Hello are you listening, There is stream for everything
Engage 2020: Hello are you listening, There is stream for everything
Frank van der Linden
 
NCUG 2019: Super charge your API’s with Reactive streams
NCUG 2019: Super charge your API’s with Reactive streamsNCUG 2019: Super charge your API’s with Reactive streams
NCUG 2019: Super charge your API’s with Reactive streams
Frank van der Linden
 
NCUG 2019: Spring forward: an introduction to Spring boot and Thymeleaf for (...
NCUG 2019: Spring forward: an introduction to Spring boot and Thymeleaf for (...NCUG 2019: Spring forward: an introduction to Spring boot and Thymeleaf for (...
NCUG 2019: Spring forward: an introduction to Spring boot and Thymeleaf for (...
Frank van der Linden
 
Engage 2019: The good, the bad and the ugly: a not so objective view on front...
Engage 2019: The good, the bad and the ugly: a not so objective view on front...Engage 2019: The good, the bad and the ugly: a not so objective view on front...
Engage 2019: The good, the bad and the ugly: a not so objective view on front...
Frank van der Linden
 
Social connections14: Super charge your API’s with Reactive streams
Social connections14: Super charge your API’s with Reactive streamsSocial connections14: Super charge your API’s with Reactive streams
Social connections14: Super charge your API’s with Reactive streams
Frank van der Linden
 
Icon UK 2018 - Spring forward: an introduction to Spring boot and Thymeleaf f...
Icon UK 2018 - Spring forward: an introduction to Spring boot and Thymeleaf f...Icon UK 2018 - Spring forward: an introduction to Spring boot and Thymeleaf f...
Icon UK 2018 - Spring forward: an introduction to Spring boot and Thymeleaf f...
Frank van der Linden
 
Spring forward: an introduction to Spring boot and Thymeleaf
Spring forward: an introduction to Spring boot and ThymeleafSpring forward: an introduction to Spring boot and Thymeleaf
Spring forward: an introduction to Spring boot and Thymeleaf
Frank van der Linden
 
DEV03 - How Watson, Bluemix, Cloudant, and XPages Can Work Together In A Real...
DEV03 - How Watson, Bluemix, Cloudant, and XPages Can Work Together In A Real...DEV03 - How Watson, Bluemix, Cloudant, and XPages Can Work Together In A Real...
DEV03 - How Watson, Bluemix, Cloudant, and XPages Can Work Together In A Real...
Frank van der Linden
 
Wcs-1785 How Watson, Bluemix, Cloudant and XPages can work together in a real...
Wcs-1785 How Watson, Bluemix, Cloudant and XPages can work together in a real...Wcs-1785 How Watson, Bluemix, Cloudant and XPages can work together in a real...
Wcs-1785 How Watson, Bluemix, Cloudant and XPages can work together in a real...
Frank van der Linden
 
DEV-1129 How Watson, Bluemix, Cloudant, and XPages Can Work Together In A Rea...
DEV-1129 How Watson, Bluemix, Cloudant, and XPages Can Work Together In A Rea...DEV-1129 How Watson, Bluemix, Cloudant, and XPages Can Work Together In A Rea...
DEV-1129 How Watson, Bluemix, Cloudant, and XPages Can Work Together In A Rea...
Frank van der Linden
 
A (XPages) developers guide to Cloudant - MeetIT
A (XPages) developers guide to Cloudant - MeetITA (XPages) developers guide to Cloudant - MeetIT
A (XPages) developers guide to Cloudant - MeetIT
Frank van der Linden
 
A (XPages) developers guide to Cloudant
A (XPages) developers guide to CloudantA (XPages) developers guide to Cloudant
A (XPages) developers guide to Cloudant
Frank van der Linden
 
Let's serve your data
Let's serve your dataLet's serve your data
Let's serve your data
Frank van der Linden
 
Let's server your Data
Let's server your DataLet's server your Data
Let's server your Data
Frank van der Linden
 
Don't worry with bower
Don't worry with bowerDon't worry with bower
Don't worry with bower
Frank van der Linden
 
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
Frank van der Linden
 
Use notes objects in memory and other useful java tips for xpages development
Use notes objects in memory and other useful java tips for xpages developmentUse notes objects in memory and other useful java tips for xpages development
Use notes objects in memory and other useful java tips for xpages development
Frank van der Linden
 
Integrate domino designer with cvs source control
Integrate domino designer with cvs source controlIntegrate domino designer with cvs source control
Integrate domino designer with cvs source control
Frank van der Linden
 
how to connect your app to the activity stream with x-pages
how to connect your app to the activity stream with x-pageshow to connect your app to the activity stream with x-pages
how to connect your app to the activity stream with x-pages
Frank van der Linden
 

More from Frank van der Linden (20)

Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The Ugly
 
Engage 2020: Hello are you listening, There is stream for everything
Engage 2020: Hello are you listening, There is stream for everythingEngage 2020: Hello are you listening, There is stream for everything
Engage 2020: Hello are you listening, There is stream for everything
 
NCUG 2019: Super charge your API’s with Reactive streams
NCUG 2019: Super charge your API’s with Reactive streamsNCUG 2019: Super charge your API’s with Reactive streams
NCUG 2019: Super charge your API’s with Reactive streams
 
NCUG 2019: Spring forward: an introduction to Spring boot and Thymeleaf for (...
NCUG 2019: Spring forward: an introduction to Spring boot and Thymeleaf for (...NCUG 2019: Spring forward: an introduction to Spring boot and Thymeleaf for (...
NCUG 2019: Spring forward: an introduction to Spring boot and Thymeleaf for (...
 
Engage 2019: The good, the bad and the ugly: a not so objective view on front...
Engage 2019: The good, the bad and the ugly: a not so objective view on front...Engage 2019: The good, the bad and the ugly: a not so objective view on front...
Engage 2019: The good, the bad and the ugly: a not so objective view on front...
 
Social connections14: Super charge your API’s with Reactive streams
Social connections14: Super charge your API’s with Reactive streamsSocial connections14: Super charge your API’s with Reactive streams
Social connections14: Super charge your API’s with Reactive streams
 
Icon UK 2018 - Spring forward: an introduction to Spring boot and Thymeleaf f...
Icon UK 2018 - Spring forward: an introduction to Spring boot and Thymeleaf f...Icon UK 2018 - Spring forward: an introduction to Spring boot and Thymeleaf f...
Icon UK 2018 - Spring forward: an introduction to Spring boot and Thymeleaf f...
 
Spring forward: an introduction to Spring boot and Thymeleaf
Spring forward: an introduction to Spring boot and ThymeleafSpring forward: an introduction to Spring boot and Thymeleaf
Spring forward: an introduction to Spring boot and Thymeleaf
 
DEV03 - How Watson, Bluemix, Cloudant, and XPages Can Work Together In A Real...
DEV03 - How Watson, Bluemix, Cloudant, and XPages Can Work Together In A Real...DEV03 - How Watson, Bluemix, Cloudant, and XPages Can Work Together In A Real...
DEV03 - How Watson, Bluemix, Cloudant, and XPages Can Work Together In A Real...
 
Wcs-1785 How Watson, Bluemix, Cloudant and XPages can work together in a real...
Wcs-1785 How Watson, Bluemix, Cloudant and XPages can work together in a real...Wcs-1785 How Watson, Bluemix, Cloudant and XPages can work together in a real...
Wcs-1785 How Watson, Bluemix, Cloudant and XPages can work together in a real...
 
DEV-1129 How Watson, Bluemix, Cloudant, and XPages Can Work Together In A Rea...
DEV-1129 How Watson, Bluemix, Cloudant, and XPages Can Work Together In A Rea...DEV-1129 How Watson, Bluemix, Cloudant, and XPages Can Work Together In A Rea...
DEV-1129 How Watson, Bluemix, Cloudant, and XPages Can Work Together In A Rea...
 
A (XPages) developers guide to Cloudant - MeetIT
A (XPages) developers guide to Cloudant - MeetITA (XPages) developers guide to Cloudant - MeetIT
A (XPages) developers guide to Cloudant - MeetIT
 
A (XPages) developers guide to Cloudant
A (XPages) developers guide to CloudantA (XPages) developers guide to Cloudant
A (XPages) developers guide to Cloudant
 
Let's serve your data
Let's serve your dataLet's serve your data
Let's serve your data
 
Let's server your Data
Let's server your DataLet's server your Data
Let's server your Data
 
Don't worry with bower
Don't worry with bowerDon't worry with bower
Don't worry with bower
 
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
 
Use notes objects in memory and other useful java tips for xpages development
Use notes objects in memory and other useful java tips for xpages developmentUse notes objects in memory and other useful java tips for xpages development
Use notes objects in memory and other useful java tips for xpages development
 
Integrate domino designer with cvs source control
Integrate domino designer with cvs source controlIntegrate domino designer with cvs source control
Integrate domino designer with cvs source control
 
how to connect your app to the activity stream with x-pages
how to connect your app to the activity stream with x-pageshow to connect your app to the activity stream with x-pages
how to connect your app to the activity stream with x-pages
 

Recently uploaded

FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User Group
CatarinaPereira64715
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
Abida Shariff
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
Product School
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
Ralf Eggert
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
Product School
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
Safe Software
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
Thijs Feryn
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Product School
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
RTTS
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Thierry Lestable
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
DianaGray10
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Inflectra
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
Sri Ambati
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 

Recently uploaded (20)

FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User Group
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 

The power of dots

  • 1. The power of DOTS Frank van der Linden, e-office
  • 2. Frank van der Linden & e-office @flinden68 http://www.domino-weblog.nl nl.linkedin.com/in/flinden68 fli@e-office.com
  • 3. Roadmap  Introduction  Setup your environment  My first DOTS tasklet  Debug the DOTS tasklet  Deploy the DOTS tasklet  Tips and tricks
  • 5. Introduction of OSGi  Open Services Gateway initiative – Started in 1999 – Still improved – module system and service platform  OSGi bundles – Can be installed remotely. – No reboot required – Lifecycle
  • 6. Introduction of OSGi  OSGi and IBM Notes/Domino 9+ – Since 8.5.2 – Extension points – Extension Library – DOTS (Domino OSGi Tasklet Service) – OpenSocial Container 8.5.3 8.5.2
  • 7. Introduction of DOTS  Domino OSGi Tasklet Service – Easy development – Outside in Eclipse IDE – Tasklets can run: scheduled, manual  Next generation agents for Domino  OpenNTF project by IBM since April, 2011 (replaced JAVADDIN project)  Included in IBM Domino 9 Social Edition
  • 9. Introduction of DOTS  DOTS Tasklets outperforms over Java Agents! AMGR Prepare Java JVM Load Agent Java Agent: launches a Initializes and JNI Bytecode Run! Thread interfaces Run! DOTS tasklet: Everything is ready to run > tell amgr run "testXPagescrash.nsf" 'LongJobAgent' 09.11.2012 19:38:39 JVM: Java Virtual Machine initialized. 09.11.2012 19:38:39 AMgr: Start executing agent 'LongJobAgent' in 'testXPagescrash.nsf' 09.11.2012 19:38:39 Agent Manager: Agent printing: 181349 09.11.2012 19:41:02 Agent Manager: Agent printing: 2227 09.11.2012 19:41:02 Agent Manager: Agent printing: Finished in 143 secs... - 09.11.2012 19:41:02 AMgr: Agent 'LongJobAgent' in 'testXPagescrash.nsf' completed execution > load dots > Listening for transport dt_socket at address: 8001 09.11.2012 19:42:40 Domino OSGi Tasklet Container started ( profile DOTS ) > 181349 > 2227 09.11.2012 19:43:22 [DOTS] (annotated) Finished in 41 secs...
  • 10. Introduction of DOTS  DOTS versus Agents – AMGR is old and complicated – Range ̶ Agents are database depended ̶ DOTS run server wide – DOTS are more flexible ̶ Precise timing
  • 12. Setup your environment  DOTS should be installed into a local IBM Domino server – For IBM Domino 9 Social Edition Public Beta, you don’t need to do anything. – For versions 8.5.2 and 8.5.3, ̶ Download DOTS package from OpenNTF ̶ You will also need some Eclipse plugins from Eclipse 3.6.2+
  • 13. Setup your environment  Create some folders inside your Domino folder – [Domino Program Files]osgi-dotsrcpeclipseplugins – [Domino Program Files]osgi-dotssharedeclipseplugins  Copy files from Eclipse install directory These plugins will be copied from Eclipse installation [Eclipse]plugins
  • 14. Setup your environment  The DOTS package contains the executables – The jar files in the newly created directories – The executables in the Domino program directory Copy to [Domino]osgi-dotssharedeclipseplugins Copy to [Domino]osgi-dots
  • 15. Setup your environment  Download Eclipse – http://www.eclipse.org/downloads – Eclipse >3.6.2(Eclipse IDE for Java EE Developers)  Download projects from OpenNTF – Domino Debug Plug-in from XPages SDK for Eclipse RCP: http://tiny.cc/XPagesSDK
  • 16. Setup the Domino Debug Plugin  Accept all next steps  Restart Eclipse
  • 17. Setup the Domino Debug Plugin  Check Prefences,if Domino Debug Plugin is installed
  • 18. Setup the target platform [Domino Program Files]osgi-dotsrcpeclipse [Domino Program Files]osgi-dotssharedeclipse
  • 19. Setup the Notes Java Api reference
  • 20. My first DOTS tasklet
  • 21. My First DOTS tasklet  Create a new Plug-in Project – File  New  Plug-in Project
  • 22. My First DOTS tasklet  Prepare the DOTS extensions
  • 23. My First DOTS tasklet  Import DOTS extensions – Deselect «Show only extension points from the required plug-ins» – Find & pick «com.ibm.dots.task» extension from the list – Correct the warning in the Manifest.mf tab, then Save & Close Manifest view.
  • 24. My First DOTS tasklet  Import Domino package
  • 25. My First DOTS tasklet  Create the Java class
  • 26. My First DOTS tasklet  Add some code.In this case a log statement, which will printed to the console.
  • 27. My First DOTS tasklet  Modify the plugin.xml name of the class tasklet id
  • 28. My First DOTS tasklet  Now we can run our tasklet  DOTS will run on the Domino server.  There are two ways to run from Eclipse IDE – Run – Run and debug
  • 29. My First DOTS tasklet  Create a “run configuration”
  • 30. My First DOTS tasklet  PDE Configuration file should be created, the first time  PDE file is created in the dots workspace
  • 31. My First DOTS tasklet  Now, lets run the tasklet
  • 32. Debug the DOTS Tasklet
  • 33. Debug the DOTS Tasklet  Stop DOTS task – Tell dots quit  Adding debug parameters to notes.ini – DOTS_DEBUGADDRESS=8001 – DOTS_DEBUGSUSPEND=y  Reload DOTS task – Load dots – Dots task will start only when debugger connects
  • 34. Debug the DOTS Tasklet  Server needs to know what to debug
  • 35. Debug the DOTS Tasklet  Adding breakpoint to debug the code
  • 36. Deploy the DOTS tasklet
  • 37. Deploy your tasklet  DOTS plugins can be deployed as OSGi bundle – As jar file in OSGi plugins folder – As update site  Disable debug parameters – Delete PDE runtime configuration (pde.launch.ini) – Disable suspend feature in debugging (DOTS_DEBUGSUSPEND)
  • 38. Deploy the DOTS Tasklet  Create a jar file from the plugin ̶ Right Click  Export  Deployable plug-ins and fragments...
  • 39. Deploy the DOTS Tasklet  Select the plugin and destination  Place exported JAR file into plugins folder, then restart DOTS task [Domino Program Files]osgi-dotssharedeclipseplugins
  • 40. Deploy the DOTS Tasklet  Another deploy method, DOTS profiles – It can stored inside a Notes database – Can run in is own profile container – With his own security settings – Can started seperatly “tell profilename run abc”
  • 41. Deploy the DOTS Tasklet  Creating Profile Repository as NSF – Create an empty Notes database, set ACL as required – Configure DOTS to use profiles database ̶ tell dots quit ̶ set config OSGI_CONFIGURATION_DB=dotsprofiles.nsf ̶ load dots ̶ tell dots profileCreate dots – DOTS profile is created – You can import an updatesite in the profile
  • 42. Deploy the DOTS Tasklet  Create a Feature project in Eclipse
  • 43. Deploy the DOTS Tasklet  Create the update site project in Eclipse
  • 44. Deploy the DOTS Tasklet  Build the update site project
  • 45. Deploy the DOTS Tasklet  Create an Update Site Database
  • 46. Deploy the DOTS Tasklet  Open OSGi profile db – Add update site database into Sites section  Restart DOTS task
  • 48. Tips and tricks  Some tips – Schedule tasks – OSGi allows you to refresh bundles without restart, here is how: ̶ Find out the «bundle-id» for the plug-in ̶ Refresh the bundle
  • 49. Tips and tricks  More tips...Annotations – Annotations is supported in DOTS. – Powerfull way of specify for each method, what to do @RunOnStart public void runOnStart( IProgressMonitor monitor ){ logMessage("Annotated onStart method"); } @Run( id="manual") public void runManual( String[] args, IProgressMonitor monitor ){ logMessage("Annotated run method with id=manual"); } @RunOnStart @RunEvery( every=60, unit=RunUnit.second ) @HungPossibleAfter( timeInMinutes=1 ) public void runEvery60seconds( IProgressMonitor monitor ){ logMessage( "Called from annotated method every 60 seconds"); }
  • 50. Multiple profiles  You may create more than one profiles. – For testing – Tasklets that you use occasionally – Tasklets with different security needs – Heavily loaded Tasklets
  • 51. Life-cycle for a scheduled Tasklet  When a tasklet runs on schedule, DOTS class loader will create an instance from your tasklet class. This instance will not be disposed until DOTS process stops.
  • 52. Multiple purpose Tasklet  Same Tasklet, different Java instances  In multiple scheduled runs – persistent objects, stays in memory  In multiple manual runs – unloaded from memory afterwards
  • 53. Tips and tricks  Logging – Try not to use System.out.println. (No output to log.nsf) – Instead, use logMessage(...) and logException(...)  Progress Monitoring – IProgressMonitor monitor argument passed on tasklet Vector<?> views = db.getViews(); methods. monitor.beginTask( "List the views", views.size() ); Init with # of steps – Very useful for tasklets running long time. for ( Object view : views ){ if ( monitor.isCanceled() ){ break;  Break if canceled. } logMessage("t" + ((View)view).getName() ); try { Thread.sleep( 1000 ); } catch (InterruptedException e) { e.printStackTrace(); } monitor.worked( 1 );  One step completed }
  • 55. Contact details @flinden68 http://www.domino-weblog.nl nl.linkedin.com/in/flinden68 fli@e-office.com