The power of dots

  • 47,163 views
Uploaded on

the slides of my session at BLUG 2013

the slides of my session at BLUG 2013

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
47,163
On Slideshare
0
From Embeds
0
Number of Embeds
7

Actions

Shares
Downloads
0
Comments
0
Likes
3

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 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
  • 4. Introduction
  • 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
  • 8. Introduction of DOTS
  • 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
  • 11. Setup your environment
  • 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
  • 47. Tips and tricks
  • 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@RunOnStartpublic 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 }
  • 54. Questions
  • 55. Contact details @flinden68 http://www.domino-weblog.nl nl.linkedin.com/in/flinden68 fli@e-office.com