> I would very much like to dump the WebServer class in favor of
> wrapping the XmlRpcServer in a HttpServlet (and not using a XML-RPC
> client to make requests like the current XmlRpcProxyServlet does).
> Basically, we'd mark it as deprecated and cease maintainence on it. As
> is, it has serious problems (as does a lot of the code in this
> package).

Funny that, I was looking at replacing the WebServer for our local
implementation so that I could split off a particular class of HTTP
request.

The problem with relying entirely on a servlet engine is one of
speed (mentioned already), but also of dependencies. The current
xml-rpc package is quite small and is self-contained. Requiring
a servlet implementation means that an application that uses
xml-rpc must embed and distribute a servlet engine, be
embedded in a servlet engine, or distributed as a WAR or similar.

I haven't seen a servlet engine that is as simple to embed as
the WebServer (although I would like to be wrong). I think that
people embedding XML-RPC functionality in their applications may
also be concerned about losing control over how threads and
synchronicity are managed.

If you embed the current XmlRpcServer as part of a servlet
doPost() method, then there is a conflict between the threading
done by the servlet engine, and that done by the XmlRpcServer.
The servlet engine has already allocated a thread to the
request, there is no need to pool and manage threads again.

It seems to me that the current XmlRpcServer does a good job
of handling threads in normal operation (without a servlet
engine out front). If the Worker was split out, and passed
an extra callback interface to handle the URI -> object mapping,
then it would be easy to embed XML-RPC into an arbitary HTTP
implementation without embedding either the XmlRpcServer
or the WebServer.

Andrew.


Reply via email to