Haven't yet wired it in, but hacked all weekend on finally killing our JAXB performance overhead. The Java EE descriptors change only every so many years so it makes zero sense to pay 500ms to 1+s *per boot* on JAXB discovering and processing our descriptor tree. We pay both reflection and class generation overhead before it's ready to actually parse anything.
I forked a 4 year old project, SXC, and hammered on it till it did exactly what I wanted -- a 100% static code for all xml parsing, no instance variables, no indirection. Just one big static logic tree. Result is it's a 70% reduction -- i.e. xml parsing should take about 30% of the time it took. The number of classes in memory should *severely* go down as well. We load 5,000 - 6,000 classes when TomEE boots and nearly 4,000 are JAXB generated accessors. So that's 4000 more classes a user will be able to have in their app before running out of perm gen -- slightly less as JAXB generated accessors are very small. Not wired in yet, but it's looking really good. -David