We want to migrate our code base from Tamino Client to Tamino API 4 Java, but would prefer not to change everything at once. Is it possible to access both APIs on the same machine at the same time? Or are there places where the two APIs might conflict in some way?
Is anyone else doing this (or trying to)?
I’ve just tried this and it worked. My test was to insert and query documents with taminoapi4j and then query them with taminoclient. The only ‘problem’ I encountered was where references to classes was ambiguous (e.g Element exists in package org.w3c.dom (taminoclient API) and in org.jdom (taminoapi4j API) ). This I fixed by being explicit e.g org.w3c.dom.Element.
I am not sure if this will work because there would be a conflict. The TaminoClient relies on a jar file called “w3cdom1.jar” which provide a DOM level 1 implementation. However the new Tamino API uses DOM level 2 and this is implemented within xerces. The package is the same (org.w3c.dom) and the class names are also the same (e.g. Node, Element etc).
In theory I guess you could take out w3cdom1.jar and allow TaminoClient to use the dom implementation from xerces. But I don’t know if this will work or not because there could be incompatabilities. :rolleyes:
I think that as long as the application classes based on the client Java API and application classes based on the Tamino Java API are instantiated within SEPARATE jvm instances there should be no problems.
But maybe the applications in question rely on a servlet engine (TomCat)?
One more thing, I recall at some point that there was an unofficial and unsupported version of the TaminoClient API built againest DOM level 2 org.w3c.dom package. Maybe if you contact your local Software AG customer support maybe they will be able to provide you with one. Just a hint.
To make this information complete, you may find the download here.
Just one final thought!
If it is the case that your apps are servlets, you may get some milage by checking out TomCat v4 as it has good separation between servlets and their classes via a sophisticated class loading hierarchy.