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:
- The ODA plugin has some plugin requirements (constraints) to be met in order to work.
- 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/pluginsOSGi 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/pluginsThere’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:
@shillemy can you issue console command: tell dots osgi diag org.openntf.domino? If that works, it will tell if there are any constraints
— Paul Withers (@PaulSWithers) May 7, 2014
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.