Hey David and all, Thanks for the detailed write up. I made some changes to being able to patch Tomcat both in tomee-jakarta and in the Maven tomee-patch-plugin. Made some small changes to bring back Jenkins to green because it was failing.
We should be good to move on. While doing this, I realized an issue with the packaging that makes the execution fail. Maven seems to pull both the -SNAPSHOT jar and the timestamped version like $ ls apache-tomee-plume-9.0.0-M7-SNAPSHOT/lib/tomee* > apache-tomee-plume-9.0.0-M7-SNAPSHOT/lib/tomee-catalina-8.0.7-20210327.040242-103.jar > apache-tomee-plume-9.0.0-M7-SNAPSHOT/lib/tomee-jdbc-8.0.7-SNAPSHOT.jar > apache-tomee-plume-9.0.0-M7-SNAPSHOT/lib/tomee-catalina-8.0.7-SNAPSHOT.jar > > apache-tomee-plume-9.0.0-M7-SNAPSHOT/lib/tomee-juli-8.0.7-20210327.040051-103.jar > apache-tomee-plume-9.0.0-M7-SNAPSHOT/lib/tomee-common-8.0.7-SNAPSHOT.jar > > apache-tomee-plume-9.0.0-M7-SNAPSHOT/lib/tomee-loader-8.0.7-20210327.040109-103.jar > apache-tomee-plume-9.0.0-M7-SNAPSHOT/lib/tomee-config-8.0.7-20210327.035954-103.jar > > apache-tomee-plume-9.0.0-M7-SNAPSHOT/lib/tomee-loader-8.0.7-SNAPSHOT.jar > apache-tomee-plume-9.0.0-M7-SNAPSHOT/lib/tomee-config-8.0.7-SNAPSHOT.jar > > apache-tomee-plume-9.0.0-M7-SNAPSHOT/lib/tomee-mojarra-8.0.7-SNAPSHOT.jar > apache-tomee-plume-9.0.0-M7-SNAPSHOT/lib/tomee-jaxrs-8.0.7-20210327.040512-103.jar > > apache-tomee-plume-9.0.0-M7-SNAPSHOT/lib/tomee-security-8.0.7-SNAPSHOT.jar > apache-tomee-plume-9.0.0-M7-SNAPSHOT/lib/tomee-jaxrs-8.0.7-SNAPSHOT.jar > > apache-tomee-plume-9.0.0-M7-SNAPSHOT/lib/tomee-webapp-8.0.7-SNAPSHOT.jar > apache-tomee-plume-9.0.0-M7-SNAPSHOT/lib/tomee-jdbc-8.0.7-20210327.040122-103.jar > > > apache-tomee-plume-9.0.0-M7-SNAPSHOT/lib/tomee-webservices-8.0.7-20210327.040612-103.jar > If someone can look at it, or I'll have a look today -- Jean-Louis Monteiro http://twitter.com/jlouismonteiro http://www.tomitribe.com On Sat, Mar 27, 2021 at 5:05 AM David Blevins <[email protected]> wrote: > Hi All, > > Some updates. I went ahead and merged that change so we're now building > wars, zips, tars and officially using Tomcat 10 in TomEE 9! > > We're using Mojarra 3.0.0 and Eclipselink 3.0.0 and I've made improvements > to the TomEE Patch Plugin to ensure that the versions we have in the dists > is completely unmodified by the Eclipse Transformer or TomEE Patch Plugin. > Here's how that works (I'll add this to the README). > > In the configuration of the plugin you can have a directive like the > following: > > <configuration> > <select>tomee-plume-webapp-transformed-.*\.war</select> > <patchSources> > > <source>${project.basedir}/../../transform/src/patch/java/</source> > <source>${project.basedir}/src/patch/java/</source> > </patchSources> > <replace> > <jars> > > <jakarta.faces-3.0.0.jar>org.glassfish:jakarta.faces:jar:3.0.0</jakarta.faces-3.0.0.jar> > > <eclipselink-3.0.0.jar>org.eclipse.persistence:eclipselink:jar:3.0.0</eclipselink-3.0.0.jar> > </jars> > <resources> > > <openejb-version.properties>${project.build.outputDirectory}/openejb-version.properties</openejb-version.properties> > </resources> > </replace> > </configuration> > > ## select > > The `<select>` setting is what tells the plugin which binaries to modify. > In the above setting we're saying we want to patch the output of the > Eclipse Transformer. The input to the transformer is the regular > `tomee-plume-webapp-9.0.0-M123-SNAPSHOT.war` file and the output is a new > `tomee-plume-webapp-transformed-9.0.0-M123-SNAPSHOT.war` file. It's the > "transformed" file we want to further patch. > > ## patchSources > > The `<patchSources>` list allows us to specify locations where *.java > files live. We will copy these into the `target/` directory and compile > them using any *.jar files we find in the war file to create the > classpath. These compiled classes are then used to overwrite any classes > by that name in any part of the war or its libraries. This is how we > handle corner cases that are too complicated to deal with using bytecode > tools -- we can just specify an alternate source file. > > Being able to have multiple locations for patch files keeps us from having > to duplicate patch files as we build multiple war files in multiple > modules. The above configuration says grab the *.java files from the > `transform` module and the *.java files from this module. > > ## replace/jars > > The `<replace><jars>` list allows us to tell the plugin, "when you see a > `jakarta.faces-3.0.0.jar` in the war file, replace it with the > `org.glassfish:jakarta.faces:jar:3.0.0` artifact from our local maven > repo." We can use this to effectively restore any jars we do not want the > Eclipse Transformer to modify. This will be any jar file that already > fully supports the Jakarta namespace, like the latest Eclipselink, Mojarra > or MyFaces. Of course in theory the Transformer shouldn't have a negative > impact on jars that already support the new namespace, but why risk it when > it's easy to gain 100% confidence the jar we ship is byte for byte the same > one produced by the respective project. > > This setting could potentially also be used to do library upgrades via the > patch plugin. > > ## replace/resources > > The `<replace><jars>` list allows us to tell the plugin, "when you see an > `openejb-version.properties` file anywhere in the war file or its > libraries, replace it with the specially modified version from > `target/classes/`." In the module we're generating a new > `openejb-version.properties` so we can change the version TomEE reports > from "8.0.7-SNAPSHOT" to "9.0.0-M7-SNAPSHOT" > > # Current Jakarta EE 9.1 Results > > With all these changes to library upgrades and how we're doing the > bytecode modification, we're now down to 218 test failures against the > March 8th snapshot of the Jakarta EE 9.1 TCK. > > - https://tck.work/tomee/build?id=1616775424416 > > The Jakarta EE 9.1 release is scheduled for mid-may, so that'd give us > till end of April to get on the official ballot and surprise the world :) > It would take some intense hours over the next month and a bunch of work > both here and in Jakarta, but I think we have a real shot. Not an easy > shot, but one worth going for. > > I'll try to post some details tomorrow on running the TCK locally. The > current instructions don't cover 9.1. > > > -David > >
