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.

Reply via email to