Would be great to at least some of the performance work into the 1.0.0 binaries
as there's a bit over 3x increase in Eclipse startup time and a bit over 2x in
regular startup time.
Aside from performance I did find two bugs:
- Web.xml metadata-complete effectively ignore
https://issues.apache.org/jira/browse/TOMEE-166
- Omitting <ejb-name> from xml may result in failed deployment
https://issues.apache.org/jira/browse/OPENEJB-1830
OPENEJB-1830 is not terrible, but TOMEE-166 is pretty bad. The point of
metadata-complete is to avoid scanning and quite simply it doesn't result in
scanning being avoided.
We pass the related TCK tests because we correctly ignore the data we've
scanned, but applications still have to pay the full price of scanning
regardless.
A lot of the overall improvements were in the .tld file area. Those were the
changes that bought us the most time (over a second off of startup and
redeploys)
Those are fantastic optimizations, not the "our stuff will be fast, but yours
will be slow" kind. If you add a ton of tld libraries in tomcat/lib/, your
apps will start much faster than they even do in plain Tomcat because of these
optimizations.
In short, we cache the results of the scan (just the urls, not the file
contents) and report that back anytime someone asks. If you have 5 apps, you
get a 5x improvement on scanning of shared tld libs. This works regardless of
how they're shared too. So if you add a common classloader, for example,
children of that classloader won't have to each individually scan the common
classloader on each deploy.
-David