- December 24, 2010

To celebrate Christmas, we are happy to announce two new releases! First, the 2.0.4 version tagged “stable” and the 2.1 M2 one tagged “testing”. Note that those tags are based on the Debian release terminology.

New stable version 2.0.4

This version fixes about 20 issues related to JAX-RS, XStream, OData, ROME, Atom, Spring extensions, GWT 2.1 support as well as a content negotiation and non-persistent connection bugs.

This is the version you want to use for all your projects in production or that will go in production by mid-2011. Note that version 1.1 is no longer maintained outside our professional support plans, so we urge you to upgrade if you haven’t done so already (see migration instructions).

New Maven repository policy

Listening to regular feed-back from the community, we have decided to refresh our Maven repository daily at 7 am (GMT+1) instead of twice a month. This will facilitate testing and feed-back on ongoing developments of the version in SVN trunk, currently 2.1 snapshots.

We have also retired our private repository, so customers with professional support plans relying on this protected repository are encouraged to update their POM file to point to For additional instructions, please see our Maven page.

Main changes

  • The logging system, based on JULI (java.util.logging), has been greatly enhanced and simplified. It is now possible to programmatically change the log level using the Engine#setLogLevel(…) and setRestletLogLevel(…) static methods. It is also possible to enable selective call logging by setting the Request#loggable property or by overriding the LogService#isLoggable(Request) method. Note that if you do provide a logging configuration file via the system properties, it will take over the programmatic configuration. Also, the new default log formatter will write each log entry in the console on a single compact line, reducing confusion while debugging.
  • The TaskService has also been enhanced to support scheduled tasks execution based on the standard ScheduledExecutorService interface.
  • New EncoderService added to automatically compress entities sent on both the client and the server side. Note that is turned off by default and that a minimum size and applicable media types can be defined. Note that the DecoderService now also works on the client-side.
  • Added server-side support for Amazon Web Services (S3) authentication.
  • Added a ConfidentialAuthorizer in the package to limit access to resources via secure protocols such as HTTPS.
  • Added a new SIP extension providing support for the Session Initiation Protocol, largely used for voice over IP. This new extension, available in the Java SE, Java EE and Android editions, ships both client and server SIP connectors over TCP, reusing the NIO/HTTP internal connector engine as SIP is a cousin of HTTP, providing excellent scalability and performance. We will cover this new features in more details in an upcoming blog post. For now, you can read the Restlet/SIP specifications page.
  • Various bug fixes and optimizations were made on the new NIO/HTTP connector, covering TCP socket reuse, buffer overflow issues and IO buffer size configuration.

For those waiting for new content of the Restlet in Action book, we are currently handling the comments made by our editor on the initial drafts submitted. We should have chapter 8 and 10 sent to the MEAP subscribers early in January.

Recent contributors

  • Alex Bass
  • Bruno Gieder
  • David Fogel
  • Eric Hough
  • Florian Bucklers
  • George Calm
  • Guido Schmidt
  • Jean-Philippe Steinmetz
  • Jim Stabile
  • John Logsdon
  • Kristoffer Gronowski
  • Mark Thornton
  • Phil Dunks
  • Rhett Sutphin
  • Rickard Oberg
  • Simon Temple
  • Tim Peierls
  • Tom Andersson

Thanks to all others who helped us in various ways for this second milestone, especially NetDev for funding a large part of the new SIP connector and helping with testing and challenging use cases !

Additional resources

Changes log:

Download links:

Maven repositories: