Hi, I just saw that 3.0 aka the streaming branch is getting much love recently and looking a lot better already - great work! :) I'd like to make a suggestion that I had in mind for some time, way back when I looked through the 2.0 code. Some of the threading and async handling could really benefit from a more consistent design and less reinvention. One nice thing might be to use the util.concurrent framework which provides much better building blocks for anything threaded - unfortunately it's only available for JDK 1.5+. For previous JDKs many projects used Doug Lea's edu.oswego.util.concurrent library but that is unmaintained now; luckily there's a solution: the "quasi-official" backport-util-concurrent library (see: http://www.mathcs.emory.edu/dcl/util/backport-util-concurrent) which is seeing increased use in many projects (the license is Apache-compatible afaik). It contains a close-as-possible port of util.concurrent to 1.4+ JVMs and allows one to migrate to "native" JDK 1.5 by simply changing the imports. Is there some interest in patches for this? If so I could take on a incremental migration towards a better design & implementation for the thread & async handling. It might really be beneficial especially since util.concurrent has adaptable threading strategies (block, wait, grow..) instead of the current behaviour of just bombing out when workers are exhausted. Other benefits might come from using the concurrent data structures - these are usually the biggest contributors to scalability and performance. I'd really like to see 3.0 become a high-performance, low-memory, low-latency screamer. :)
Comments? Holger PS: I thought the "streaming" branch would also incorporate a StAX parser - is that still the goal or did I misunderstand? It still seems everything is using SAX. In any case streaming the requests/responses themselves is a great start though.