
Redstone xml-rpc library is a small but versatile implementation of the xml-rpc specification. it contains the following main features:
* an xml-rpc client for accessing xml-rpc services, and an xml-rpc servlet
for publishing plain java objects as xml-rpc services in a web server.
both the client and the server can be configured to stream messages
directly over a socket without constructing the messages in memory.
although this is not compliant with the specification (which mandates
the use of a content-length http header), this allows for virtually
unlimited sized messages when communicating with services and clients
that do not use or rely on the content-length header.
* a serialization framework allowing custom serializers to serialize values
inherently unknown to the library. the serialization framework may be
used outside of the xml-rpc library to encode java objects into xml
streams. the library comes with serializers for common types like maps,
collections, lists, object arrays, primitive arrays, and a reflective
serializer for serializing any java object.
* a set of custom serializers generating json messages instead of xml-rpc
messages allowing for easy access from javascript. the library also
includes a small xml-rpc client in javascript for accessing services
published by this library.
* a sax-based xml-rpc parser that may be used outside of the library to
parse streams with xml-rpc messages.
* a dynamic proxy generator to allow xml-rpc services to be used through
regular java-interfaces. this helps increase productivity and type
safety while allowing ides to provide content assist functionality.
* invocation interceptors that are hooked up on the server side to
intercept calls to services published though the library. interceptors
may intercept invocations based on method names or arguments sent from
the client. based on this information, interceptors may prevent
invocations from completing or add, modify, or remove arguments before
dispatching the call to the service. interceptors may also redirect
calls and examine and modify the result of an invocation before it
is sent back to the client.