Walter | 23 Sep 10:14 2014

Android Restlet Example broken

First: Thanks for this great framework!
But I cannot get the newest version to run under Android - an example would be very helpful, but the link to 
"" on page is broken

What I need is an Android-REST-Server, I tried to build one myself, but execution failed with "No available
server connector supports the required protocols: 'HTTP' . Please add the JAR of a matching connector to
your classpath. Then, register this connector helper manually."

I tried to attach different protocols and routers, but without success. Here is my code:

			    Component serverComponent = new Component();
			    serverComponent.getServers().add(Protocol.HTTP, 8111);
			    serverComponent.getDefaultHost().attach("/test", HelloServerResource.class);
			    try {
			    } catch (Exception e) {Log.e("Server start failed:", "Code:", e);}
Thanks a lot for your help and feedback!


Jerome Louvel | 5 Aug 16:27 2014

Restlet Framework 2.2.2 released

Hi all,

We have just released a new version of our "stable" branch including a fix for a regression in the Android edition generation process:

Shai Levit | 31 Jul 18:23 2014

Reading and Parsing Headers in Restlet

How can one read and parse a header using Restlet?
Specifically, if the client header includes an ID (or just some number) and this number needs to be checked
against an Array of numbers (or it can be a file or a hash table) to assure that this number is stored and
valid. If so, then the attachment file can be POSTed, otherwise a random number is generated o the client in
the return message.

I have tried several different ways, but none seem to really work and I thought I could get some step by step
insight on this. Please note I am NEW to this, not just Restlet, but REST all together.


PS: I have some preliminary code(s) I can post if that is helpful, but I did not want to taint someones
solution(s) and thought process.


Tal Liron | 21 Jul 07:40 2014

Missing git tags

There are no git tagd for versions 2.2.0 and 2.2.1. Would the Restlet team happen to have the git hashes
recorded somewhere?

I am chasing a nasty bug and want to make sure I'm on the right code.


Jerome Louvel | 7 May 06:05 2014

Announcing HTML newsletter and Restlet web API platform

Hi all,

Starting with the Restlet Framework 2.3 M2 and 2.2.1 versions released today, we will be announcing the new releases and security updates via an HTML newsletter. As always, we cross post the content to our blog and Twitter  <at> restlet_org account.

Registering to is a real barrier for new users who often prefer to reach out on StackOverFlow or Twitter, so we think that offering this direct information channel is necessary. We are also planning to migrate from Tigris to Google Groups later this year.

To kick things off, we on-boarded existing subscribers to this mailing list and also offer a clear way to subscribe to this newsletter when downloading the framework. If needed, unsubscribing is just one click away.

We are also building some synergies between the open source Restlet Framework and the APISpark full-stack PaaS under the Restlet web API platform project at (see updated web site) to provide additional value to our open source community on the following fronts:
  1. API documentation (during development, once published, multiple versions)
  2. API crafting (design contract, generate server skeleton)
  3. API usage (client SDKs, self-registration, sand-boxing, forking)
  4. API management (firewall, rate limitation, usage reports)
  5. API hosting (multi-tenant, containerization, cross-region)
As always, we look forward to better serving our community and welcome any feed-back and contributions!
Jerome Louvel | 7 Feb 00:05 2014

GitHub issues reorganization

Hi all,

In preparation of the new Restlet Framework 3.0 dev cycle, some clean-up was due in our GitHub issue tracker.

I have just reorganized the tags for clarity and constency based on our recent experience. We now have six aspects/dimensions for an issue:
  • Distribution: Zip | Maven | Eclipse (p2) | Windows
  • Version: 2.1 | 2.2 | 3.0
  • Edition: Android | GAE |GWT | Java SE | Java EE | OSGi
  • Module: Restlet API | Restlet Engine | Forge | Documentation
  • Extension: Atom | Crypto | ...
  • State: new | analysis | implementation | testing | escalated
  • Type: bug | feature | enhancement | task
  • Priority: critical | high | medium | low
Work still has to be done to properly label existing issues, but when you enter new issues, please try to properly set the labels for each dimension.

I've also cleaned up our milestones so provide the realistic set of issues that we are working on instead of the desired set. We will now use the "Priority" level to express this.

Here is the current set of milestones we have:
Best regards,
Andy Dennie | 25 Jan 14:33 2014

suggestion for facilitating exception translation

All of my ServerResource subclasses have methods containing exception translation boilerplate, like

public class MyResource extends MyBaseResource { 
     <at> Get 
    public Foo getFoo() { 
        Foo result = null; 
        try { 
            result = .... 
        catch (RuntimeException e) { 
        return result; 

and then MyBaseResource implements doCatch like this: 

    protected void doCatch(final RuntimeException e) { 
        Class<?> exceptionClass = e.getClass(); 
        if (IllegalArgumentException.class.isAssignableFrom(exceptionClass)) { 
            // chain & translate to a 400 
            throw new ResourceException(Status.CLIENT_ERROR_BAD_REQUEST, e.getMessage(), e); 

        // NotFoundException is a custom exception class I've defined
        if (NotFoundException.class.isAssignableFrom(exceptionClass)
                || IndexOutOfBoundsException.class.isAssignableFrom(exceptionClass)) {
            // chain & translate to a 404
            throw new ResourceException(Status.CLIENT_ERROR_NOT_FOUND, e.getMessage(), e);

        if (UnsupportedOperationException.class.isAssignableFrom(exceptionClass)) {
            // chain & translate to a 405
            throw new ResourceException(Status.CLIENT_ERROR_METHOD_NOT_ALLOWED, e.getMessage(), e);

        // ConflictException is a custom exception class I've defined
        if (ConflictException.class.isAssignableFrom(exceptionClass)
                || IllegalStateException.class.isAssignableFrom(exceptionClass)) {
            // chain & translate to a 409
            throw new ResourceException(Status.CLIENT_ERROR_CONFLICT, e.getMessage(), e);

        throw e; 

It would be nice if I didn't have to put that try/catch boilerplate in all my  <at> Get,  <at> Put,  <at> Post, etc. methods. 

I was thinking that a method like 
    protected ResourceException translateException(final RuntimeException e) 

defined on ServerResource would be nice to have.  It could be called from ServerResource.doHandle if an
exception is thrown, giving the resource object a chance to do the translation to a ResourceException.  If
that method returned null, then ServerResource could do its own translation. 



Jerome Louvel | 21 Sep 00:46 2013

New IntelliJ IDEA license

We have received a new license for IntelliJ IDEA that was kindly offered by JetBrains. Thanks to Martin Svenson for handling the process.

Restlet committers can contact me in order to get a copy.

Best regards,

Paul Sprague | 7 May 16:51 2013

How to implement an AMQP client+server connector?


Can anyone on this list make some recommendations as to how a connector could be implemented that isn't
based on HTTP? I was initially think that I needed to implement a connector, connection, controller,
in/outbound ways, etc. But after looking at the code I'm not so sure this is the correct approach.

My thought was to leverage Apache Qpid as the underlying implementation. I just need some idea as to how I can
integrate it into restlet.



Juan | 7 Jan 21:11 2013

access webservice with hostname versus localhost

I have been playing with the Restlet examples, seems that the URI defined in the router.attach call
(http://localhost:8111/hello) needs to called exactly like it from the clients, including the host
name. If my local machine is named galaxy18 and i run the webservice and local client, I can only access it
via localhost:8111/hello. If I change the router.attach to http://galaxy18:8111/hello then the
client can access it with galaxy18 but not with localhost.

I don't like hardcording, especially machine names, if you can imagine this will be a pain if my webservice
is running on different machines.

Is this an instance where I need to use read the hostname into a variable then use that in the router.attach or
am i missing something basic here?


Jerome Louvel | 1 Oct 13:46 2012

Restlet license for IntelliJ IDE

Hi all,


For Restlet code contributors, we have a free license available thanks to JetBrains.


Please contact us directly for additional information.