the power of dots
DESCRIPTION
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 PresentationTRANSCRIPT
![Page 1: The power of DOTS](https://reader036.vdocuments.mx/reader036/viewer/2022062310/568165d0550346895dd8de70/html5/thumbnails/1.jpg)
The power of DOTS
Frank van der Linden, e-office
![Page 2: The power of DOTS](https://reader036.vdocuments.mx/reader036/viewer/2022062310/568165d0550346895dd8de70/html5/thumbnails/2.jpg)
Frank van der Linden & e-office
nl.linkedin.com/in/flinden68
http://www.domino-weblog.nl
@flinden68
![Page 3: The power of DOTS](https://reader036.vdocuments.mx/reader036/viewer/2022062310/568165d0550346895dd8de70/html5/thumbnails/3.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062310/568165d0550346895dd8de70/html5/thumbnails/4.jpg)
Introduction
![Page 5: The power of DOTS](https://reader036.vdocuments.mx/reader036/viewer/2022062310/568165d0550346895dd8de70/html5/thumbnails/5.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062310/568165d0550346895dd8de70/html5/thumbnails/6.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062310/568165d0550346895dd8de70/html5/thumbnails/7.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062310/568165d0550346895dd8de70/html5/thumbnails/8.jpg)
Introduction of DOTS
![Page 9: The power of DOTS](https://reader036.vdocuments.mx/reader036/viewer/2022062310/568165d0550346895dd8de70/html5/thumbnails/9.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062310/568165d0550346895dd8de70/html5/thumbnails/10.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062310/568165d0550346895dd8de70/html5/thumbnails/11.jpg)
Setup your environment
![Page 12: The power of DOTS](https://reader036.vdocuments.mx/reader036/viewer/2022062310/568165d0550346895dd8de70/html5/thumbnails/12.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062310/568165d0550346895dd8de70/html5/thumbnails/13.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062310/568165d0550346895dd8de70/html5/thumbnails/14.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062310/568165d0550346895dd8de70/html5/thumbnails/15.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062310/568165d0550346895dd8de70/html5/thumbnails/16.jpg)
Setup the Domino Debug Plugin
Accept all next steps
Restart Eclipse
![Page 17: The power of DOTS](https://reader036.vdocuments.mx/reader036/viewer/2022062310/568165d0550346895dd8de70/html5/thumbnails/17.jpg)
Setup the Domino Debug Plugin
Check Prefences,if Domino Debug Plugin is installed
![Page 18: The power of DOTS](https://reader036.vdocuments.mx/reader036/viewer/2022062310/568165d0550346895dd8de70/html5/thumbnails/18.jpg)
Setup the target platform
[Domino Program Files]\osgi-dots\rcp\eclipse
[Domino Program Files]\osgi-dots\shared\eclipse
![Page 19: The power of DOTS](https://reader036.vdocuments.mx/reader036/viewer/2022062310/568165d0550346895dd8de70/html5/thumbnails/19.jpg)
Setup the Notes Java Api reference
![Page 20: The power of DOTS](https://reader036.vdocuments.mx/reader036/viewer/2022062310/568165d0550346895dd8de70/html5/thumbnails/20.jpg)
My first DOTS tasklet
![Page 21: The power of DOTS](https://reader036.vdocuments.mx/reader036/viewer/2022062310/568165d0550346895dd8de70/html5/thumbnails/21.jpg)
My First DOTS tasklet
Create a new Plug-in Project– File New Plug-in Project
![Page 22: The power of DOTS](https://reader036.vdocuments.mx/reader036/viewer/2022062310/568165d0550346895dd8de70/html5/thumbnails/22.jpg)
My First DOTS tasklet
Prepare the DOTS extensions
![Page 23: The power of DOTS](https://reader036.vdocuments.mx/reader036/viewer/2022062310/568165d0550346895dd8de70/html5/thumbnails/23.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062310/568165d0550346895dd8de70/html5/thumbnails/24.jpg)
My First DOTS tasklet
Import Domino package
![Page 25: The power of DOTS](https://reader036.vdocuments.mx/reader036/viewer/2022062310/568165d0550346895dd8de70/html5/thumbnails/25.jpg)
My First DOTS tasklet
Create the Java class
![Page 26: The power of DOTS](https://reader036.vdocuments.mx/reader036/viewer/2022062310/568165d0550346895dd8de70/html5/thumbnails/26.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062310/568165d0550346895dd8de70/html5/thumbnails/27.jpg)
My First DOTS tasklet
Modify the plugin.xml
tasklet id
name of the class
![Page 28: The power of DOTS](https://reader036.vdocuments.mx/reader036/viewer/2022062310/568165d0550346895dd8de70/html5/thumbnails/28.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062310/568165d0550346895dd8de70/html5/thumbnails/29.jpg)
My First DOTS tasklet
Create a “run configuration”
![Page 30: The power of DOTS](https://reader036.vdocuments.mx/reader036/viewer/2022062310/568165d0550346895dd8de70/html5/thumbnails/30.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062310/568165d0550346895dd8de70/html5/thumbnails/31.jpg)
My First DOTS tasklet
Now, lets run the tasklet
![Page 32: The power of DOTS](https://reader036.vdocuments.mx/reader036/viewer/2022062310/568165d0550346895dd8de70/html5/thumbnails/32.jpg)
Debug the DOTS Tasklet
![Page 33: The power of DOTS](https://reader036.vdocuments.mx/reader036/viewer/2022062310/568165d0550346895dd8de70/html5/thumbnails/33.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062310/568165d0550346895dd8de70/html5/thumbnails/34.jpg)
Debug the DOTS Tasklet
Server needs to know what to debug
![Page 35: The power of DOTS](https://reader036.vdocuments.mx/reader036/viewer/2022062310/568165d0550346895dd8de70/html5/thumbnails/35.jpg)
Debug the DOTS Tasklet
Adding breakpoint to debug the code
![Page 36: The power of DOTS](https://reader036.vdocuments.mx/reader036/viewer/2022062310/568165d0550346895dd8de70/html5/thumbnails/36.jpg)
Deploy the DOTS tasklet
![Page 37: The power of DOTS](https://reader036.vdocuments.mx/reader036/viewer/2022062310/568165d0550346895dd8de70/html5/thumbnails/37.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062310/568165d0550346895dd8de70/html5/thumbnails/38.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062310/568165d0550346895dd8de70/html5/thumbnails/39.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062310/568165d0550346895dd8de70/html5/thumbnails/40.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062310/568165d0550346895dd8de70/html5/thumbnails/41.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062310/568165d0550346895dd8de70/html5/thumbnails/42.jpg)
Deploy the DOTS Tasklet
Create a Feature project in Eclipse
![Page 43: The power of DOTS](https://reader036.vdocuments.mx/reader036/viewer/2022062310/568165d0550346895dd8de70/html5/thumbnails/43.jpg)
Deploy the DOTS Tasklet
Create the update site project in Eclipse
![Page 44: The power of DOTS](https://reader036.vdocuments.mx/reader036/viewer/2022062310/568165d0550346895dd8de70/html5/thumbnails/44.jpg)
Deploy the DOTS Tasklet
Build the update site project
![Page 45: The power of DOTS](https://reader036.vdocuments.mx/reader036/viewer/2022062310/568165d0550346895dd8de70/html5/thumbnails/45.jpg)
Deploy the DOTS Tasklet
Create an Update Site Database
![Page 46: The power of DOTS](https://reader036.vdocuments.mx/reader036/viewer/2022062310/568165d0550346895dd8de70/html5/thumbnails/46.jpg)
Deploy the DOTS Tasklet
Open OSGi profile db– Add update site database into Sites section
Restart DOTS task
![Page 47: The power of DOTS](https://reader036.vdocuments.mx/reader036/viewer/2022062310/568165d0550346895dd8de70/html5/thumbnails/47.jpg)
Tips and tricks
![Page 48: The power of DOTS](https://reader036.vdocuments.mx/reader036/viewer/2022062310/568165d0550346895dd8de70/html5/thumbnails/48.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062310/568165d0550346895dd8de70/html5/thumbnails/49.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062310/568165d0550346895dd8de70/html5/thumbnails/50.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062310/568165d0550346895dd8de70/html5/thumbnails/51.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062310/568165d0550346895dd8de70/html5/thumbnails/52.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062310/568165d0550346895dd8de70/html5/thumbnails/53.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062310/568165d0550346895dd8de70/html5/thumbnails/54.jpg)
Questions
![Page 55: The power of DOTS](https://reader036.vdocuments.mx/reader036/viewer/2022062310/568165d0550346895dd8de70/html5/thumbnails/55.jpg)
Contact details
nl.linkedin.com/in/flinden68
http://www.domino-weblog.nl
@flinden68