550 likes | 671 Views
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
E N D
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 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 • Since 8.5.2 • Extension points • Extension Library • DOTS (Domino OSGi Tasklet Service) • OpenSocial Container
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
Run! Introduction of DOTS • DOTS Tasklets outperforms over Java Agents! Java Agent: DOTS tasklet: 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...
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 • 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-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
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
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-dots\rcp\eclipse [Domino Program Files]\osgi-dots\shared\eclipse
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 somecode.Inthis case a log statement, whichwillprintedto 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 • 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 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-dots\shared\eclipse\plugins
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 • 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