If you are registered on the OpenText site you’ve probably received this week the notification about the status of xPlore:
- xPlore 22.1 will be the last version of xPlore, with Patch 12 being the supported version
- Documentum search is now officially listed as the replacement of xPlore
- Support for xPlore will finish on 2027 (+ extended)
If you have checked “recently” xPlore 22.1 patches, you’ll have realized that OpenText moved from Wildfly to Tomcat 9 during these patches (on Patch 04 or 05, if I remember correctly) as well as moving to JDK 17. However, despite P12 supporting JDK 21, xPlore still uses Tomcat 9 (remember that latest branch is Tomcat 11, with Tomcat 10 being the version considered “standard” as of today). This situation is strange because all the Documentum stack is running in Tomcat 10… except this. And despite having KBs on how to upgrade Tomcat with minor versions (KB0833958 and KB0833423) is still weird that this is not done yet.
It happens that I had opened a case just a few days before getting the notification mail asking about the status of xPlore and Tomcat 10 (due to Tomcat 9 vulnerability topics) and got this answer:
"Moving to Tomcat 10.x would need upgrading code compilation to Java17.
This is a larger effort which is not planned."
So… not believing this statement (as we have recently upgraded everything to Java 17 and it has been basically replacing javax.* packages with jakarta.* packages, and it hasn’t been that much of a “larger effort”) for 3 web applications (dsearch, dsearchadmin and indexagent) I decided to check how difficult this would really be.
First thing, I had to install locally xPlore 22.1, then upgrade it to 22.1 P12 and finally create the PrimaryDsearch and IndexAgent instances. So far, so good.
So let’s try this:
- Download latest Tomcat 10.1 (currently 10.1.47)
- Unpack twice the Tomcat 10.1 package (PrimaryDsearch_tomcat10.1.47 and Indexagent_tomcat10.1.47)
- For PrimaryDsearch instance:
- Copy PrimaryDsearch_tomcat9.0.100/admindata
- Copy PrimaryDsearch_tomcat9.0.100/dctmInfo.properties
- Copy PrimaryDsearch_tomcat9.0.100/webapps (dsearch and dsearchadmin)
- Copy PrimaryDsearch_tomcat9.0.100/bin scripts (start/stopPrimarySearch and dctmServerStatus.sh)
- Update PrimaryDsearch_tomcat10.1.47/admindata/admindb/XhiveDatabase.bootstrap with Tomcat 10 path
- Update PrimaryDsearch_tomcat10.1.47/conf/server.xml to use port 9300
- Update copied scripts to bin folder with Tomcat 10.1 path
- Update loggging configuration with Tomcat 10.1 path
- For IndexAgent instance:
- Copy Indexagent_tomcat9.0.100/dctmInfo.properties
- Copy Indexagent_tomcat9.0.100/webapps (IndexAgent)
- Copy Indexagent_tomcat9.0.100/bin scripts (start/stopPrimarySearch and dctmServerStatus.sh)
- Update Indexagent_tomcat10.1.47/webapps/IndexAgent/WEB-INF/classes/indexagent.xml with Tomcat 10.1 path
- Update Indexagent_tomcat10.1.47/conf/server.xml to use port 9200
- Update copied scripts to bin folder with Tomcat 10.1 path
- Update loggging configuration with Tomcat 10.1 path
Then we start both Tomcat 10 and… nothing 😀 As expected the javax.* references make this unable to work with Tomcat 10. So what can we do? “Normal” approach would be taking the original source code and replacing javax.* with jakarta.* and dependenies on libraries but a) I do not have the original source code and b) I do not want to be decompiling all the jars. So it is really a large effort? I do not think so.
Apache provides a migration tool that can modify all the references to javax in all the files of your application. So… what if we give it a try? We just need to download the tool and execute it:
./migrate.sh /opt/xplore/PrimaryDsearch_tomcat10.1.47/webapps/javax_dsearch /opt/xplore/PrimaryDsearch_tomcat10.1.47/webapps/dsearch
./migrate.sh /opt/xplore/PrimaryDsearch_tomcat10.1.47/webapps/javax_dsearchadmin /opt/xplore/PrimaryDsearch_tomcat10.1.47/webapps/dsearchadmin
./migrate.sh /opt/xplore/IndexAgent_tomcat10.1.47/webapps/javax_IndexAgent /opt/xplore/IndexAgent_tomcat10.1.47/webapps/IndexAgent
And after few seconds the tool will finish converting the applications and we just have to delete the javax_xxx folders and start PrimaryDsearch and IndexAgent. And what happens now?
Dsearchadmin:


IndexAgent:


IndexAgent status from DA:

Search results:

Total time for this: ~20 min give or take. Considering that probably writing this post has taken me longer that this, not sure if we can qualify this as a “large effort” 😀