Lucee Tomcat 10 Updates

Hey all! I’ve been working to get Lucee working with Tomcat 10. If the Lucee team was going to take this on, what would be the recommended approach? If anyone else has any ideas, feel free to put them out there. Or, if anyone has this working in any context, I would love hear about it.

There are two tools that I know of to assist (this forum didn’t like my links for some reason).

https://tomcat.apache.org/download-migration.cgi

Tomcat has a tool that will migrate wars by dropping your javaee app into webapps-javaee folder. It does run the migration (including on all nested jars) and the migrated war gets expanded in the webapps directory. This unfortunately isn’t enough. It throws the exact same servlet exceptions when using the tool or not. Maybe there is some dynamic class loading it isn’t accounting for.

Eclipse makes a tool called Eclipse Transformer that does roughly the same as the tool above, but handles many more cases (source code updates by directory, jars, wars, osgi bundle configs etc), but while the docs appear fairly complete, using the tool isn’t as straightforward. If anyone plays with it, II had my best luck building it from source and then using mvn exec to run the transformer class. I dropped the war or directory I was testing with directly into the tools folder. The migrated war had a bunch of issues. The source transformer was way more accurate. But its not enough. If anyone wants instructions for using this tool feel free to ask. The instructions on Github didn’t work at all out of box.

I also manually made the updates to Lucee but there are too many bundles with required libraries that I can’t access to change. The httpcomponents-httpclient for example requires a version of logging that requires javax. I guess I could setup a maven repo with updated versions or something.

I’ll happily provide a updated Lucee 6 fork with Jakarta updates if I can get it building properly. Any insights appreciated

2 Likes

I’ve looked at all these tools as well but found the same issue-- they are great for a simple app with a simple lib folder, but Lucee loads so many different jars from different places (sometimes downloaded on the fly) it’s nearly impossible to do any sort of direct bytecode transformation on it. Furthermore, when Lucee does cut over, it will need to basically create new versions of all its extensions and bundles which reference that namespace which will cause another issue in that Lucee doesn’t have a good sem ver support for the Lucee core to declare what versions of an extension it can or cannot use.

I can’t really speak for the Lucee team, but I would think putting your fork out there would be helpful as a starting point. Moving to the Jakarta namespace is not on the active roadmap for Lucee or Adobe yet, but it’s already causing me quite a lot of issues now that I’m stuck on old versions of Undertow which no longer receives any sort of updates for new features :confused:

It probably won’t help you much, but its easier to get Jakarta working on Lucee 4.5. Obviously a step back when 6 is in Beta - but worth it depending on what you’re trying to do. The steps were simple and I can publish my repo if anyone is interested.

I cloned the eclipse transformer.
I cloned the 4.5 git repo into a folder in transformer.

Transform:

mvn exec:java --file=org.eclipse.transformer.cli -Dexec.arguments="/lucee-4.5-source"

This does its thing and puts everything into an output folder named output-luceexxxx. There are a couple error based on finding non-visible chars in a couple text files. Not important.

I replaced the tomcat version in build/servers to use tomcat 10 zip.

ant express

I ran into an error with sun.misc.vm not existing that I had to resolve. Tomcat needs Lucee config xml’s added. The lucee jar needs to be copied into Tomcat.

Assets are not resolving for me. There are other errors to fix. But the basic servlet is working and evaling CFML so I call it a win for now.

I am still on a mission to get Lucee 6 working on Jakarta. I will be able to test virtual threads and the Graal ahead of time (native) compilation on Tomcat 10 with Lucee. Worth it!

3 Likes

In the same boat here. I am trying to upgrade our web servers to Debian 12 which is now bundled with Tomcat 10. Would be great if Lucee could support Tomcat 10 out of the box soon.

using the tomcat-jakartaee-migration tool on the latest Lucee 5 as well as Lucee 6-RC jar works, but catalina then complains
java.io.FileNotFoundException: /var/lib/tomcat10/lucee-server/patches/a.b.c.d.lco (No such file or directory)

At least for me it’s not the same servlet exception as before “migrating” the jar. Using the vanilla lucee.jar, I got the expected lucee java.lang.ClassNotFoundException: javax...
due to javax vs. jakarta.