SlideShare ist ein Scribd-Unternehmen logo
1 von 55
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

Weitere ähnliche Inhalte

Was ist angesagt?

OpenNTF Domino API (ODA): Super-Charging Domino Development
OpenNTF Domino API (ODA): Super-Charging Domino DevelopmentOpenNTF Domino API (ODA): Super-Charging Domino Development
OpenNTF Domino API (ODA): Super-Charging Domino DevelopmentPaul Withers
 
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 DevicesJan S. Rellermeyer
 
Managing Change
Managing ChangeManaging Change
Managing ChangeMirko Jahn
 
Tribal Nova Docker feedback
Tribal Nova Docker feedbackTribal Nova Docker feedback
Tribal Nova Docker feedbackNicolas 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 1Slobodan 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 2010Arun 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 GlassFishArun Gupta
 
Project Zero For Javapolis 2007
Project Zero For Javapolis 2007Project Zero For Javapolis 2007
Project Zero For Javapolis 2007Jason McGee
 
Rami Sayar - Node microservices with Docker
Rami Sayar - Node microservices with DockerRami Sayar - Node microservices with Docker
Rami Sayar - Node microservices with DockerWeb à 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 ProductSubramanyam 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 2009Arun 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 JenkinsMicael Gallego
 
OpenSolaris Introduction
OpenSolaris IntroductionOpenSolaris Introduction
OpenSolaris Introductionsatyajit_t
 
Puppet and Telefonica R&D
Puppet and Telefonica R&DPuppet and Telefonica R&D
Puppet and Telefonica R&DPuppet
 

Was ist angesagt? (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
 

Andere mochten auch

Andere mochten auch (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
 

Ähnlich wie The power of DOTS tasklets

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 DOTSSerdar Basegmez
 
Django simplified : by weever mbakaya
Django simplified : by weever mbakayaDjango simplified : by weever mbakaya
Django simplified : by weever mbakayaMbakaya 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 TrioJé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 boxbpowell29a
 
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-14Simon 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/2014lenworthhenry
 
Dockerizing a Symfony2 application
Dockerizing a Symfony2 applicationDockerizing a Symfony2 application
Dockerizing a Symfony2 applicationRoman Rodomansky
 
Domino on docker version 2
Domino on docker version 2Domino on docker version 2
Domino on docker version 2Slobodan Lohja
 
IBM Think Session 8598 Domino and JavaScript Development MasterClass
IBM Think Session 8598 Domino and JavaScript Development MasterClassIBM Think Session 8598 Domino and JavaScript Development MasterClass
IBM Think Session 8598 Domino and JavaScript Development MasterClassPaul Withers
 
A Fabric/Puppet Build/Deploy System
A Fabric/Puppet Build/Deploy SystemA Fabric/Puppet Build/Deploy System
A Fabric/Puppet Build/Deploy Systemadrian_nye
 
Docker for Devs - John Zaccone, IBM
Docker for Devs - John Zaccone, IBMDocker for Devs - John Zaccone, IBM
Docker for Devs - John Zaccone, IBMDocker, Inc.
 
Gitlab and Lingvokot
Gitlab and LingvokotGitlab and Lingvokot
Gitlab and LingvokotLingvokot
 
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 MeetupDavid Barreto
 
Intro to SpringBatch NoSQL 2021
Intro to SpringBatch NoSQL 2021Intro to SpringBatch NoSQL 2021
Intro to SpringBatch NoSQL 2021Slobodan Lohja
 

Ähnlich wie The power of DOTS tasklets (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
 

Mehr von 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 UglyFrank 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 everythingFrank 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 streamsFrank 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 streamsFrank 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 ThymeleafFrank 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 - MeetITFrank 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 CloudantFrank 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 usefulFrank 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 developmentFrank 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 controlFrank 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-pagesFrank van der Linden
 

Mehr von 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
 

Kürzlich hochgeladen

Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 

Kürzlich hochgeladen (20)

Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 

The power of DOTS tasklets

  • 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