Top Banner
The power of DOTS Frank van der Linden, e-office
55

The power of DOTS

Mar 22, 2016

Download

Documents

Jena

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. [email protected]. Roadmap. Introduction Setup your environment My first DOTS tasklet Debug the DOTS tasklet - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: The power of DOTS

The power of DOTS

Frank van der Linden, e-office

Page 2: The power of DOTS

Frank van der Linden & e-office

nl.linkedin.com/in/flinden68

http://www.domino-weblog.nl

[email protected]

@flinden68

Page 3: The power of DOTS

Roadmap

Introduction Setup your environment My first DOTS tasklet Debug the DOTS tasklet Deploy the DOTS tasklet Tips and tricks

Page 4: The power of DOTS

Introduction

Page 5: The power of DOTS

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

Page 6: The power of DOTS

Introduction of OSGi

OSGi and IBM Notes/Domino– Since 8.5.2– Extension points– Extension Library– DOTS (Domino OSGi Tasklet Service)– OpenSocial Container

8.5.2

8.5.3

9+

Page 7: The power of DOTS

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

Page 8: The power of DOTS

Introduction of DOTS

Page 9: The power of DOTS

Introduction of DOTS

DOTS Tasklets outperforms over Java Agents!

Java Agent:

DOTS tasklet:

AMGR launches a

ThreadJVM Initializes

Prepare Java and JNI

interfacesLoad Agent Bytecode Run!

Run!

Everything is ready to run

> tell amgr run "test\XPagescrash.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 'test\XPagescrash.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 'test\XPagescrash.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...

Page 10: The power of DOTS

Introduction of DOTS

DOTS versus Agents– AMGR is old and complicated– Range

9̶ Agents are database depended9̶ DOTS run server wide

– DOTS are more flexible9̶ Precise timing

Page 11: The power of DOTS

Setup your environment

Page 12: The power of DOTS

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,

9̶ Download DOTS package from OpenNTF9̶ You will also need some Eclipse plugins from Eclipse 3.6.2+

Page 13: The power of DOTS

Setup your environment

Create some folders inside your Domino folder– [Domino Program Files]\osgi-dots\rcp\eclipse\plugins– [Domino Program Files]\osgi-dots\shared\eclipse\plugins

Copy files from Eclipse install directory

These plugins will be

copied from Eclipse

installation

[Eclipse]\plugins

Page 14: The power of DOTS

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-dots\shared\eclipse\plugins

Copy to

[Domino]\osgi-dots

Page 15: The power of 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

Page 16: The power of DOTS

Setup the Domino Debug Plugin

Accept all next steps

Restart Eclipse

Page 17: The power of DOTS

Setup the Domino Debug Plugin

Check Prefences,if Domino Debug Plugin is installed

Page 18: The power of DOTS

Setup the target platform

[Domino Program Files]\osgi-dots\rcp\eclipse

[Domino Program Files]\osgi-dots\shared\eclipse

Page 19: The power of DOTS

Setup the Notes Java Api reference

Page 20: The power of DOTS

My first DOTS tasklet

Page 21: The power of DOTS

My First DOTS tasklet

Create a new Plug-in Project– File New Plug-in Project

Page 22: The power of DOTS

My First DOTS tasklet

Prepare the DOTS extensions

Page 23: The power of DOTS

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.

Page 24: The power of DOTS

My First DOTS tasklet

Import Domino package

Page 25: The power of DOTS

My First DOTS tasklet

Create the Java class

Page 26: The power of DOTS

My First DOTS tasklet

Add some code.In this case a log statement, which will printed to the console.

Page 27: The power of DOTS

My First DOTS tasklet

Modify the plugin.xml

tasklet id

name of the class

Page 28: The power of DOTS

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

Page 29: The power of DOTS

My First DOTS tasklet

Create a “run configuration”

Page 30: The power of DOTS

My First DOTS tasklet

PDE Configuration file should be created, the first time PDE file is created in the dots workspace

Page 31: The power of DOTS

My First DOTS tasklet

Now, lets run the tasklet

Page 32: The power of DOTS

Debug the DOTS Tasklet

Page 33: The power of DOTS

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

Page 34: The power of DOTS

Debug the DOTS Tasklet

Server needs to know what to debug

Page 35: The power of DOTS

Debug the DOTS Tasklet

Adding breakpoint to debug the code

Page 36: The power of DOTS

Deploy the DOTS tasklet

Page 37: The power of DOTS

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)

Page 38: The power of DOTS

Deploy the DOTS Tasklet

Create a jar file from the plugin9̶ Right Click Export Deployable plug-ins and fragments...

Page 39: The power of DOTS

Deploy the DOTS Tasklet

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

[Domino Program Files]\osgi-dots\shared\eclipse\plugins

Page 40: The power of DOTS

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”

Page 41: The power of DOTS

Deploy the DOTS Tasklet

Creating Profile Repository as NSF– Create an empty Notes database, set ACL as required– Configure DOTS to use profiles database

9̶ tell dots quit9̶ set config OSGI_CONFIGURATION_DB=dotsprofiles.nsf9̶ load dots9̶ tell dots profileCreate dots

– DOTS profile is created

– You can import an updatesite in the profile

Page 42: The power of DOTS

Deploy the DOTS Tasklet

Create a Feature project in Eclipse

Page 43: The power of DOTS

Deploy the DOTS Tasklet

Create the update site project in Eclipse

Page 44: The power of DOTS

Deploy the DOTS Tasklet

Build the update site project

Page 45: The power of DOTS

Deploy the DOTS Tasklet

Create an Update Site Database

Page 46: The power of DOTS

Deploy the DOTS Tasklet

Open OSGi profile db– Add update site database into Sites section

Restart DOTS task

Page 47: The power of DOTS

Tips and tricks

Page 48: The power of DOTS

Tips and tricks

Some tips– Schedule tasks

– OSGi allows you to refresh bundles without restart, here is how:9̶ Find out the «bundle-id» for the plug-in9̶ Refresh the bundle

Page 49: The power of DOTS

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");

}

Page 50: The power of DOTS

Multiple profiles

You may create more than one profiles.– For testing– Tasklets that you use occasionally– Tasklets with different security needs– Heavily loaded Tasklets

Page 51: The power of DOTS

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.

Page 52: The power of DOTS

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

Page 53: The power of DOTS

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 methods.

– Very useful for tasklets running long time.

Vector<?> views = db.getViews();

monitor.beginTask( "List the views", views.size() );

Init with # of steps

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

}

Page 54: The power of DOTS

Questions

Page 55: The power of DOTS

Contact details

nl.linkedin.com/in/flinden68

http://www.domino-weblog.nl

[email protected]

@flinden68