Restlet 2.2中Restlet类的分析
org.restlet.Restlet 有三个重要的方法: 一、fireContextChanged(Restlet restlet, Context context) 这个方法是在一个Restlet 使用构造函数 Restlet(Context context) 以及调用 setContext()方法的时候被触发的,目的是将当前生产的Restlet实例作为child加
org.restlet.Restlet 有三个重要的方法:
一、fireContextChanged(Restlet restlet, Context context)
这个方法是在一个Restlet 使用构造函数 Restlet(Context context) 以及调用 setContext()方法的时候被触发的,目的是将当前生产的Restlet实例作为child加到context中。
因为每个restlet 在操作之前,都要把和它相关的 context 放置到当前线程池中,这样实际上就把 restlet 也一起放了进去。在任何需要的地方,可以把context取出,同时也就得到了restlet。
二、createFinder( Class extends org.restlet.resource.ServerResource> resourceClass)
在很多的子类中都会用到这个方法。当需要把一个resource 绑定/连接 到一个组件上的时候,就需要Finder来封装。
在一个REST 组件上,通过Finder 可以找到 ServerResource 。实际上就是通过Component或者是Application找到对应的资源uri 。
三、public void handle(Request request, Response response)
这个方法本来是Restlet实现的父类Uniform中就的方法,但是由于没有@Override 声明,所以默认的不覆写父类的方法。
这也是为什么Restlet声明为 abstract class 的原因。
这个方法把 response 加入当前线程池 Response,如果有context,则context也进入 Context 当前线程池。
然后,启动这个Restlet 。
如果启动出现异常或者启动失败,则把response的状态设置为系统错误,返回。
返回后,状态服务会检查response的状态,然后向客户端返回相应的代码: 2xx , 3xx ,4xx , 5xx 。
关于返回客户端的错误代码可参见之前的一篇文章,http的状态码说明
http://blog.csdn.net/teamlet/article/details/5713441