I'm not sure if this helps with the discussion or not, but here goes.
I haven't paid much attention to what happens when using httpclient within the
xmlrpc framework, but around the days of httpclient v2.0, I used it extensively
in a standalone fashion. I did look at version 3.0 as well, but haven't looked
at anything since. But I assume what applied then will still apply now.
Anyway, I can confirm that the httpclient framework itself supports
keep-alives. I used WireShark (which was named Ethereal at the time) and paid
pretty close attention to how it behaved. If I remember right, it has a couple
small idiosyncracies, like not being able to close it's side of a connection at
the instant that the remote side closes it, but they had workarounds for this
type of thing that prevented errors. If I remember right, it would close it's
side of the connection immediately before firing off the next transaction.
This particular behavior may be corrected now.
I ended up using httpclient it for my project and it performed well. I used it
under pretty load, about 100k requests an hour and didn't run into any real
issues.
I do remember that in order to enable keep-alives, the configuration was
slightly different from the most basic configuration, but it was still very
simple.
I had hoped to have a little more time to mess around with this within the
framework of ws-xmlrpc and report results and give an example, but I just
haven't been able to make the time.
-Mike