This is an implementation of the
XML-RPC specification, for Java(TM). Credit should
go to Hannes Wallnoefer who maintains
another XML-RPC library for Java(TM)
from which several ideas have been borrowed when implementing this software.
Download the current version (1.3 from August 5, 2002)
which contains a compiled version of the library, the source code, and the documentation.
The documentation contained in the download is also available separately
for downloading or on-line browsing with a PDF viewer.
Those of you who still need to support Java 1.x may
download the previous version (1.2.1). Unless we see a demand for keeping Java 1.x
support, we will not branch from 1.2.1. From now on (v1.3), the Marquée XML-RPC Library
requires J2SE.
1.3 Change log
- Switched to Java 2 Collections throughout the whole library. This means that
the library uses the Java 2 collection classes and that the API uses the
corresponding collection interfaces. If this is unacceptable for pure 1.1
users we'll consider making a branch from 1.2.1 with the Java 1.1 collections.
- The reflective invocation handler has been updated with a new algorithm for
matching target handler methods. Up until now, the arguments used in calling
handler methods had to exactly match the formal parameters of the methods (as
a limitation in the Java Reflection API). Now, the arguments need only be
assignment compatible with the parameters which helps a lot!
- The LogBackEnd interface has received a new method accepting a Throwable.
Thanks to Will Sargent
- The serializer now registers a MapSerializer, a CollectionSerializer, and
an ObjectArraySerializer by default. This means that applications and handlers
may send and return collections, maps, and object arrays (incl. String[], et.c.)
without having to register these custom serializers themselves. Now that the
library requires Java 2 we felt that this was a good idea.
- Added support for asynchronous invocations. The XmlRpcClient has a new
invokeAsynchronously() method accepting an XmlRpcCallback object that will
receive results, faults, or exceptions. Currently, the method spawns a new
thread for every invocation. In an upcoming release we will give the
threading code an overhaul allowing application defined thread factories
to be plugged in at both the server and the client, making the server more
job based so that applications and the library may share the same thread pool.
- Removed final modifier on flags in the Trace class. From now on, various levels
of logging may be set at runtime. Just set the corresponding flag (for instance
Trace.Messages = false) at any time. By default, errors, warnings and messages
are logged. The final modifier was previously used so that all logging code
could be completely removed from the resulting byte code in situations where
memory is extremely low (like with the TINI platform).
1.2.1 Change log
Various bugfixes. Please report any errors you encounter in the tracking system at Source Forge so
that we may make the library more stable. Thanks!
- Compilation error in XmlRpcClient removed. Thanks everyone for pointing that out.
- XmlRpcServer is now sending HTTP 400 when running out of connections.
- Handler names may now contain punctuation marks. Thanks to Jamie Warner for pointing
that out for the Helma Library.
- XmlRpcProxy is now properly extracting handler names from interfaces where a
handler name is omitted. Previously, only non-nested interfaces in anonymous packages
was (unvoluntarily) supported.
- A bug in XmlRpcConnection was removed, increasing connectioCount twice for every
connection created. Thanks to Alan Littleford for helping us find it.
- The invoke() methods in XmlRpcClient are now synchronized. Thanks Micah Spears.
1.2 Change log
- XmlRpcClients now connect to servers using XmlRpcClientConnectionFactories. The factory creates
XmlRpcClientConnections that supply the logic required by the XmlRpcClient. Two implementations
of the factory interface are supplied; SocketConnectionFactory and URLConnectionFactory. The
SocketConnectionFactory handles the HTTP essentials itself and may be somewhat more resource
friendly, whereas the URLConnectionFactory utilizes the URLConnection class in the java.net
package and may be better in applet scenarios. This is all thanks to Toby Allsopp and
Peace Software International Ltd.
- Ant build script supplied, also thanks to Toby Allsopp and Peace Software.
- Support for GZIP content encoding, thanks to Micah Spears.
- A new invocation processor example is supplied. The SessionInvocationProcessor
makes it easy for handlers to store client state between invocations.
- The documentation has received a new paragraph on invocation processors. As a matter of fact,
the only copy of the document I had got corrupted so the whole document is rewritten from the PDF file.
Sigh, guess I never learn. It will be checked into CVS from now on.
- The default XML parser has been changed from JAXP to MinML
from The Wilson Partnership. Thanks a lot!
1.1 Change log
The library has been updated in several areas and there has also been an interface change in
XmlRpcInvocationProcessor. The following list describes the major changes.
- An optional extension to the library by Rainer Bischof has been included which make the library work similar to
RMI in that complete object graphs may be serialized and transferred over the wire. See last chapter in
the documentation.
- New documentation in PDF format, and updated JavaDoc comments and switched to GNU Lesser General Public License.
- New examples; a filtering invocation processor, a servlet, and a client using dynamic proxies.
- Overall improved exception handling. XmlRpcException now has a method, isRemote(), that indicates
the origin of the exception.
- The built-in serializer now also serializes characters, bytes, longs and shorts.
- The interfaces used with the XmlRpcProxy are required to handle XmlRpcExceptions.
- The preProcess() method in XmlRpcInvocationProcessors may now abort the invocation through
the new boolean return value. postProcess() amy also alter the return value before sending it
back to the caller. All methods now also receive the IP address of the caller.
- Reflective invocation handlers may be assigned a list of names of methods that should be published. Good
for restricting which methods are exposed in legacy code. Thanks to N. Christopher.
- XML messages are encoded using ISO-8859-1. In the next release, you will be able to alter this.
- Plus lots of small internal improvements and corrections. Note that the server by default only traces errors and warnings.
Enjoy!
This project is kindly hosted by
Source Forge, and you may subscribe to the mailing lists as a
user or a
developer.
|