We've known for a while that some part of Xalan are oversynchronized, due to their use of the original Java heap and vector classes -- but we couldn't move to the unsynchronized 1.2 Collection classes because we were still committed to running on Java 1.1.8.
Now that Xerces has given up compatability with that version -- and I think Xalan is doing likewise? -- it might be interesting to see what effect a global replace of the old classes with their new versions would have on the system. I don't think we're actually relying on their built-in synchronization anywhere; the few places I can think of where we do some inter-thread coordination are explicitly synchronized at the functional level. This cut-over would involve a lot of fiddling detail work, but should be straightforward... ______________________________________ "... Three things see no end: A loop with exit code done wrong, A semaphore untested, And the change that comes along. ..." -- "Threes" Rev 1.1 - Duane Elms / Leslie Fish (http://www.ovff.org/pegasus/songs/threes-rev-11.html)