##### XML-RPC

- Overview
- Download
- Changes
- Mailing Lists
- Contributing
- XML-RPC 2
- Links

##### Documentation

- Client Classes
- Server Side XML-RPC
- Vendor Extensions
- SSL
- Introspection
- Advanced Techniques
- XML-RPC Types
- FAQ
- Javadocs

##### Project Documentation

- Project Information
- Project Reports
  - Changes Report
  - RAT Report

## Changes in Apache XML-RPC

### Release History

Version | Date | Description
--- | --- | ---
3.1.3 | 2010-Feb-06 |
3.1.2 | 2009-Apr-19 |
3.1.1 | 2008-Aug-10 |
3.1 | 2007-Aug-31 |
3.0 | 30-Aug-2006 |
3.0rc1 | 27-Jul-2006 |
3.0b1 | 24-Jun-2006 |
3.0a1 | 17-Feb-2005 |
2.0.2 | Not yet released |
2.0.1 | 28-Dec-2005 |

### Release 3.1.3 - 2010-Feb-06

Type | Changes | By
--- | --- | ---
| The version number in the clients user agent string is now updated automatically. | jochen
| Fixed a deadlock in the ThreadPool. Fixes XMLRPC-168. | jochen
| The ClientFactory is now supporting an empty remote class. Fixes XMLRPC-174. Thanks to Livnat Peer. | jochen
| Added support for configured timeouts to the XmlRpcSun15HttpTransport class. Thanks to Gam. | jochen
| Fixed a potential security hole: The client has been able to include server side resources into the request by using external entities. Thanks to Johan Hôgre. | jochen

### Release 3.1.2 - 2009-Apr-19

Type | Changes | By
--- | --- | ---
| Eliminated a possible race condition in the ThreadPool. Fixes XMLRPC-162. Thanks to Mark Gertsvolf. | jochen
| The ThreadPool could create more threads than configured. Fixes XMLRPC-161. Thanks to Mark Gertsvolf. | jochen
| Weakened the access control in the WebServer class in order to make subclassing easier. Fixes XMLRPC-160. Thanks to James Baldassari. | jochen
| Improved the handling of HTTP status codes that indicate an error. Fixes XMLRPC-159. Thanks to Brandon DuRette. | jochen
| Fixed a possible NPE in case of a malformed HTTP request in the WebServer. Thanks to Alan Burlison. | jochen
| The webserver's connection timeout wasn't applied to the ServletWebServer. Fixes XMLRPC-166. Thanks to Alan Burlison. | jochen
| A client could prevent other clients from connecting by not sending any data. Fixes XMLRPC-166. Thanks to Alan Burlison. | jochen
| The platforms default encoding has been used at some point when decoding HTTP headers. Fixes XMLRPC-164. Thanks to Greg Wurth. | jochen

### Release 3.1.1 - 2008-Aug-10

Type | Changes | By
--- | --- | ---
| The XmlRpcCommonsTransport is now always declaring its entities as repeatable. Thanks to Póka Balázs. | jochen
| It is now possible to set the clients user-agent header in the client configuration. Fixes XMLRPC-149. Thanks to Andreas Sahlbach. | jochen
| Ensured that the server replies with a spec compliant request, if the client uses the content-length header. Fixes XMLRPC-148. Thanks to Andreas Sahlbach. | jochen
| The XmlRpcSunHttpTransportFactory wasn't thread safe. Fixes XMLRPC-150. | jochen
| Added support for javax.net.ssl.SSLSocketFactory and javax.net.Proxy. Fixes XMLRPC-101. Thanks to Julio Francisco Veronelli. | jochen
| Added some clarification on the handling of Object[] and java.util.List to the page on "XML-RPC Data Types". Fixes XMLRPC-151. | jochen
| Minor grammar improvements. Fixes XMLRPC-157. Thanks to Kay Tiong Khoo. | jochen
| Added the XmlRpcErrorHandler, which allows to customize the error logging. This allows, for example, to minimize the logging for business exceptions. Fixes XMLRPC-156. | jochen
| Documented, that called methods are choosen based on their signature. In particular, multiple methods with the same name are supported. Fixes XMLRPC-155. | jochen
| Fixed the FAQ entry on how to obtain the clients IP address. Fixes XMLRPC-158. | jochen

### Release 3.1 - 2007-Aug-31

Type | Changes | By
--- | --- | ---
| Introduced the "enabledForExceptions" property. | jochen
| Added support for void methods, if extensions are turned on. | jochen
| Added PropertyHandlerMapping.load(ClassLoader, Map). Fixes XMLRPC-118. Thanks to Perry Nguyen. | jochen
| The authentication handler, type converter and requestprocessor factories are now configurable as properties of the XmlRpcServlet. Fixes XMLRPC-117. Thanks to Jimisola Laursen. | jochen
| Atomic properties of XmlRpcServer are now configurable as init parameters in the XmlRpcServlet. Fixes XMLRPC-116. Thanks to Jimisola Laursen. | jochen
| Reworked the WebServer/ThreadPool framework in order to ensure a clean shutdown. | jochen
| The configuration framework, as introduced by XMLRPC-116, was applicable to the configuration only, and not to the XmlRpcServlet, or the XmlRpcServletServer. Fixes XMLRPC-124. Thanks to Jimisola Laursen. | jochen
| Introduced the method AbstractReflectiveHandlerMapping.isHandlerMethod(). This should allow users to prevent remote invocation of certain methods, for example initialization stuff. | jochen
| The ClientFactory is now able to use a custom name for the remote handler. So far, it was always using the interface name. Fixes XMLRPC-126. Thanks to Eugene Prokopiev. | jochen
| It is now possible to have other objects than strings as map keys. Fixes XMLRPC-127. | jochen
| Made extending the XmlRpcCommonsTransportFactory easier. Fixes XMLRPC-131. Thanks to Steffen Pingel. | jochen
| Added support for redirects. Fixes XMLRPC-132. Thanks to Andrew Norman. | jochen
| Fixed an invalid example in the "advanced" document. Fixes XMLRPC-136. Thanks to Mario Linke. | jochen
| An invalid dateTime value is now causing a more informative error message. Fixes XMLRPC-140. | jochen
| The redirect handling (XMLRPC-132) wasn't actually working, because it treated an URI as a charset name. Fixes XMLRPC-144. Thanks to Steve Cohen. | jochen
| Address matching in the Webserver wasn't actually working, because casting of integers to bytes was implemented wrong. Fixes XMLRPC-145. Thanks to Gamaliel Amaudruz. | jochen
| Make the HttpClient creation in XmlRpcCommonsTransport and the URLConnection creation in XmlRpcSunHttpTransport protected. This is required for cookie support. | jochen
| The WebServer was producing invalid error responses, if contentLengthOptional was set. | jochen
| If the server was throwing an XmlRpcException, then the fault code and fault string weren't given to the client. Fixes XMLRPC-113. Thanks to Juha Syrjala. | jochen
| The WebServer replies with an HTTP error 401 now, if the client uses chunked encoding. Fixes XMLRPC-114. | jochen
| 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. Fixes XMLRPC-74. | jochen
| An NPE was thrown, if the clients request didn't contain a "params" element. Fixes XMLRPC-115. | jochen
| The method TimingOutCallback.waitForResponse is now checking, whether a response has already arrived before waiting. Thanks to Jonathan Oexner. | jochen
| 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. Fixes XMLRPC-119. | jochen
| The configuration of the reply timeout in the commons transport was wrong. Fixes XMLRPC-120. Thanks to Juho Yli-Krekola. | jochen
| The DateParser is now treating an empty string as null. Fixes XMLRPC-133. Thanks to Carsten Wolters. | jochen
| Fixed a broken link referring to an "SSL with Jetty" HOW-TO. Fixes XMLRPC-134. Thanks to Sir Bode Rafael. | jochen
| The XmlRpcRequestParser and XmlRpcResponseParser didn't reset their internal state within startDocument(). Consequently, they haven't been reusable. Fixes XMLRPC-141. Thanks to Keith McNeill. | jochen

### Release 3.0 - 30-Aug-2006

Type | Changes | By
--- | --- | ---
| Fixed the spelling of CharSetXmlWriterFactory, which made the class basically useless. Fixes XMLRPC-100. Thanks to Matt Preston. | jochen
| Fixed that the WebServer didn't wait before retrying to bind to the server socket. Thanks to Stanislav Miklik. | jochen
| Fixed an endless loop, if the WebServer threw a BindException. Thanks to Stanislav Miklik. | jochen
| A NullPointerException was triggered, if the BasicEncoding was set to null. Fixes XMLRPC-104. Thanks to Landon Fuller. | jochen
| Basic authentication didn't work, if the base64 encoded string with user name and password contained more than 72 characters. Fixes XMLRPC-104. Thanks to Landon Fuller. | jochen
| 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.) | jochen
| Basic authentication didn't work with the commons http transport, if user name or password contained non-ASCII characters. Fixes XMLRPC-105. | jochen
| The releaseWorker() method wasn't called for the server. Thanks to Randall Bryant. | jochen
| Fixed a bug in the web servers thread pool, which caused that threads haven't been reused. | jochen
| Documentation improvements Thanks to Jason McLaurin. | jochen
| Added documentation on custom data types. | jochen
| The XmlRpcLiteHttpTransport is now creating a socket in a protected methods. This allows to switch to alternative socket implementations. Fixes XMLRPC-107. Thanks to Catalin Hritcu. | jochen
| More documentation fixes. Fixes XMLRPC-108. Thanks to Catalin Hritcu. | jochen
| Fixed an invalid FAQ example. Fixes XMLRPC-109. Thanks to Catalin Hritcu. | jochen

### Release 3.0rc1 - 27-Jul-2006

Type | Changes | By
--- | --- | ---
| Added a missing "synchronized" to the TimingOutCallback. Thanks to Alan Burlison. | jochen
| Fixed an invalid index, that caused the ReflectiveXmlRpcHandler to fail detecting a method. Fixes XMLRPC-94. Thanks to Chris Conrad. | jochen
| Added documentation for accessing an SSL server. Fixes XMLRPC-93. | jochen
| A null parameter list is now treated as an empty object array. Fixes XMLRPC-96. Thanks to Jimisola Laursen. | jochen
| The type long was missing in types.apt. Fixes XMLRPC-97. Thanks to Jimisola Laursen. | jochen

### Release 3.0b1 - 24-Jun-2006

Type | Changes | By
--- | --- | ---
| Add connectionTimeout and replyTimeout in RPC clients. CommonsTransport support connection and reply timeout, liteHttpTransport only support reply timeout | hgomez
| The value created by HttpUtil.encodeBasicAuthentication(...) was terminated with a line feed, which is invalid for use in HTTP headers. Thanks to Marek Ludha. | jochen
| add support for BigDecimal and BigInteger in extensions. | hgomez
| Nested object arrays could not be parsed. Thanks to Walter Mundt. | jochen
| The "string" tag could not be parsed. Thanks to Walter Mundt. | jochen
| Added the DynamicHandlerMapping. Fixes XMLRPC-76. Thanks to Walter Mundt. | jochen
| XmlRpcException.printStackTrace() was throwing an NPE, if no linked exception was present. Thanks to Walter Mundt. | jochen
| The project is now splitted into three jar files: common, client, and server. | jochen
| 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. Thanks to Brad Karp. | jochen
| 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. Fixes XMLRPC-79. | jochen
| Added support for initializable handlers. Thanks to Mark Petrovic. | jochen
| Added the TimingOutCallback, which allows to abort a request, if the server doesn't reply within a given time. Fixes XMLRPC-56. Thanks to Ken Weiner. | jochen
| Fixed that dateTime values must not include timezone values. | hgomez
| The XmlRpcServlet allows to configure its "enabledForExtensions" value as an init parameter. Fixes XMLRPC-84. Thanks to Denis Carniel. | jochen
| It is now possible to create and initialize handler objects per request. | jochen
| Added partial support for automatic conversion of object arrays to lists, or vectors. Same for maps to hash tables, or properties. Fixes XMLRPC-89. | jochen

### Release 3.0a1 - 17-Feb-2005

Type | Changes | By
--- | --- | ---
| Complete rewrite, adding vendor extensions: Streaming mode, support for all primitive Java types, nulls, DOM elements, and JAXB objects. | jochen

### Release 2.0.2 - Not yet released

Type | Changes | By
--- | --- | ---
| A missing increment in LiteXmlRpcTransport.initConnection() prevented, that the method could finally fail, resulting in a never ending loop. Fixes XMLRPC-67. Thanks to Mike Bailey. | jochen

### Release 2.0.1 - 28-Dec-2005

Type | Changes | By
--- | --- | ---
| The Webserver class was unable to handle basic authentication, because the BASE64 codec wasn't initialized. Fixes XMLRPC-68. Thanks to Johan Oskarson. | jochen
| The characters 0x20, 0xe000, and 0x10000 have been escaped without reason. Fixes XMLRPC-69. Thanks to Claude Zervas. | jochen
| The wrong version of commons-codec was downloaded by build.xml. Fixes XMLRPC-73. Thanks to Thomas Mohaupt. | jochen
| Added the CommonsXmlRpcTransportFactory. Thanks to Jimisola Laursen. | jochen
| Added the possibility to specify a timezone for interpreting incoming date values. Thanks to Henry Story. | jochen
| Upgrade to commons-httpclient 3.0. | jochen