Making OpenNTF Domino API work with DOTS tasklets

We all know the good that the OpenNTF Domino API project does to the hands of java developers who have to use lotus.domino classes.

So, to give my tasklets a good start, I knew I had to go the OpenNTF Domino API way. However, I wasn’t able to get it to work. As soon as I was implementing org.openntf.domino classes any previously working tasklet started refusing to load (not present in the dots tasklist and no errors in the /data/domino/workspace-dots/logs/startup.log).

It turned out I was ignoring 2 important things:

  1. The ODA plugin has some plugin requirements (constraints) to be met in order to work.
  2. There are 2 OSGi enviroments: the one for XPages and the one for DOTS. Those two enviroments present different plugin sets which are NOT shared. This means that if I want to use a custom plugin in both environments I must copy it twice, one copy for each environment in one of corresponding paths of competence.

    These paths are:

    OSGi
    /domino/notes/latest/linux/osgi/rcp/eclipse/plugins
    /domino/notes/latest/linux/osgi/shared/eclipse/plugins
    /data/domino/workspace/applications/eclipse/plugins

    OSGi for DOTS
    /domino/notes/latest/linux/osgi-dots/rcp/eclipse/plugins
    /domino/notes/latest/linux/osgi-dots/shared/eclipse/plugins
    /data/domino/workspace-dots/applications/eclipse/plugins

    There’s a third way to load such plugins (through eclipse update site databases) but I don’t want to take that into consideration now.

Although I correctly copied the ODA plugin and my plugin that depended on it over the workspace-dots folder, which I prefer over the other twos for obvious reasons (user rights and preservation), my plugin simply refused to load.

After some further investigation and request for help a Paul Withers’ tweet finally pointed me in the right direction:

The command syntax wasn’t correct but I figured out the correct command to issue by invoking the DOTS command help. The correct syntax and result below:

> tell dots diag org.openntf.domino.plugin

05/07/2014 05:37:37 PM [DOTS] update@../../../../../../../../../var/ibm/domino/data/domino/workspace-dots/applications/eclipse/plugins/org.openntf.domino.plugin_1.0.0.201312231409.jar [22]
05/07/2014 05:37:37 PM [DOTS]
05/07/2014 05:37:37 PM [DOTS]
05/07/2014 05:37:37 PM [DOTS] Direct constraints which are unresolved:
05/07/2014 05:37:37 PM [DOTS]
05/07/2014 05:37:37 PM [DOTS]
05/07/2014 05:37:37 PM [DOTS] Missing required bundle com.ibm.icu_3.8.1.

I had an unresolved constraint – in other words a required plugin for ODA was missing. I imagined it had to be present in the other OSGi enviroment (since ONDA had always been working well there) and, yes, I finally found it at this location: /domino/notes/latest/linux/osgi/rcp/eclipse/plugins/com.ibm.icu_3.8.1.v20120530.jar

I then copied it over the workspace-dots directory, and restarted the dots task. Finally my plugin started working.

Sincerely speaking I don’t know why, by default, the com.ibm.icu plugin is present only in the OSGi environment. I still know very little of this technology and of how it’s embedded in the Domino Server.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.