Changes in Apache XML-RPC Make the HttpClient creation in XmlRpcCommonsTransport and the URLConnection creation in XmlRpcSunHttpTransport protected. This is required for cookie support. The WebServer was producing invalid error responses, if contentLengthOptional was set. If the server was throwing an XmlRpcException, then the fault code and fault string weren't given to the client. The WebServer replies with an HTTP error 401 now, if the client uses chunked encoding. The properties "Extension-Name", "Specification-Vendor", "Specification-Version", "Specification-Title", "Implementation-Vendor-Id", "Implementation-Vendor" and "Implementation-Version" are now present in the MANIFEST files. An NPE was thrown, if the clients request didn't contain a "params" element. The method TimingOutCallback.waitForResponse is now checking, whether a response has already arrived before waiting. Fixed a serious performance problem, if the XML parser was sending large content in small pieces. This could happen, for example, if the content contained a large number of character entities. The configuration of the reply timeout in the commons transport was wrong. The DateParser is now treating an empty string as null. The XmlRpcRequestParser and XmlRpcResponseParser didn't reset their internal state within startDocument(). Consequently, they haven't been reusable. Fixed the spelling of CharSetXmlWriterFactory, which made the class basically useless. Fixed that the WebServer didn't wait before retrying to bind to the server socket. Fixed an endless loop, if the WebServer threw a BindException. A NullPointerException was triggered, if the BasicEncoding was set to null. Basic authentication didn't work, if the base64 encoded string with user name and password contained more than 72 characters. Basic authentication didn't work with the commons http transport, because the commons httpclient wasn't configured to send credentials by default. (It was waiting for a challenge.) Basic authentication didn't work with the commons http transport, if user name or password contained non-ASCII characters. The releaseWorker() method wasn't called for the server. Fixed a bug in the web servers thread pool, which caused that threads haven't been reused. Documentation improvements Added documentation on custom data types. The XmlRpcLiteHttpTransport is now creating a socket in a protected methods. This allows to switch to alternative socket implementations. More documentation fixes. Fixed an invalid FAQ example. Added a missing "synchronized" to the TimingOutCallback. Fixed an invalid index, that caused the ReflectiveXmlRpcHandler to fail detecting a method. Added documentation for accessing an SSL server. A null parameter list is now treated as an empty object array. The type long was missing in types.apt. Add connectionTimeout and replyTimeout in RPC clients. CommonsTransport support connection and reply timeout, liteHttpTransport only support reply timeout The value created by HttpUtil.encodeBasicAuthentication(...) was terminated with a line feed, which is invalid for use in HTTP headers. add support for BigDecimal and BigInteger in extensions. Nested object arrays could not be parsed. The "string" tag could not be parsed. Added the DynamicHandlerMapping. XmlRpcException.printStackTrace() was throwing an NPE, if no linked exception was present. The project is now splitted into three jar files: common, client, and server. The Base64 encoder doesn't accept buffers of length 0. Such a buffer was passed, if the byte array to encode has itself length 0. HTTP/1.0 requires a content-length header. The Lite HTTP transport doesn't support HTTP/1.1, so it refuses the "contentLengthOptional" setting from now on. Added support for initializable handlers. Added the TimingOutCallback, which allows to abort a request, if the server doesn't reply within a given time. Fixed that dateTime values must not include timezone values. The XmlRpcServlet allows to configure its "enabledForExtensions" value as an init parameter. It is now possible to create and initialize handler objects per request. Added partial support for automatic conversion of object arrays to lists, or vectors. Same for maps to hash tables, or properties. Complete rewrite, adding vendor extensions: Streaming mode, support for all primitive Java types, nulls, DOM elements, and JAXB objects. A missing increment in LiteXmlRpcTransport.initConnection() prevented, that the method could finally fail, resulting in a never ending loop. The Webserver class was unable to handle basic authentication, because the BASE64 codec wasn't initialized. The characters 0x20, 0xe000, and 0x10000 have been escaped without reason. The wrong version of commons-codec was downloaded by build.xml. Added the CommonsXmlRpcTransportFactory. Added the possibility to specify a timezone for interpreting incoming date values. Upgrade to commons-httpclient 3.0.