翻看了一下宣称Restful的架构。选了Restlet进行学习。
花费了挺多时间和精力,觉得Restlet学习起来并不轻松。特别是极少的文档和示例说明让人常常很郁闷。
网上真正在说明Restlet的示例和剖析,就我自己看过的,也就是09年时候的某个博主写的20多篇的博客了。不过可惜的是时过境迁,Restlet至今已经更新到了2.2.3版本。已经发生了较大的变化,无法从过去的示例中得到足够的启发。同时也认为写的太过浅显。
写这个博客的目的不仅仅是分享一下自己浅薄的想法,更加重要的是能记录自己在学习过程中的思考和疑惑。 我想一个人学习和思考不如网络上的豪杰们一起更加有收获。如果有写的不对的地方,请大家留言。同时希望大家能保持相互的学习和交流。 拒绝谩骂和任何负面情绪的宣泄。谢谢合作。
首先是到http://restlet.com/ 访问restlet的官网首页。然后下载一份用户引导文档(rf-user-guide-2-2),两份源码和示例zip包:restlet-jee-2.2.3,restlet-jse-2.2.3.zip.
第一份文档是用于说明restlet整个架构和源码示例信息。另外两份需要配置并放置到本地工程中做开发学习。
解压restlet-jee-2.2.3.zip 发现其中有很多依赖的包。这些包并不是所有的示例所需的,自己根据示例的需要添加。包分为两类,一类是被文件夹单独存放的,这类是非restlet的第三方包,而且其他则是restlet的jar包:
配置本地的开发环境,jdk我使用的是1.6
-------------------------------------------------------------------------------------------------------------------------
大致看一下示例:
包大概分为三个部分:client,common,server.
作为一个BS结构的示例,server一定是服务端,先启动它,那么客户端的请求才能被处理。
随便打开一个示例服务端示例(示例包路径:org.restlet.example.book.restlet.ch07.sec1.sub5.MailServerAplication),找到服务启动的入口main方法:
public static void main(String[] args) throws Exception {
Component mailServer = new Component();
mailServer.getClients().add(Protocol.CLAP);
mailServer.getServers().add(Protocol.HTTP, 8111);
mailServer.getDefaultHost().attach(new MailServerApplication());
mailServer.start();
}
初学的时候是看不出这个过程的具体意义的。现在我们的目的是运行一个可用的示例大概对Restlet有一个印象。直接run as ---> java application
看到控制台打印信息:
三月 31, 2015 3:22:45 下午 org.restlet.ext.nio.ServerConnectionHelper start
信息: Starting the internal nio [HTTP/1.1] server on port 8111
大概的意思是服务启动成功,端口是8111
现在再启动客户端:
直接run as ----> java application:
控制台出现打印信息:
似乎是被返回了一个html页面。
这个示例就这样运行完了。用代码客户端可以执行,现在试试用浏览器:输入客户端代码中的URI路径:http://localhost:8111/accounts/chunkylover53/mails/123
一样也返回了整个页面。
到这里为止,我们大概知道restlet能干什么,它的确能做一个web应用。
而且似乎比起java的几个大框架更加快捷。
现在让我们看看代码。
服务端MailserverApplication:
从字面上的意思大概是这样的。还有一个类是我们没有打开查看的:MailServerResource:
发现一个标签,方法体内做的事情英文标注已经说的很清除了。
关键是这个@Get让人想起在客户端中出现的代码行:System.out.print(mailClient.get().getText());
发现在mailClient下还有其他的方法:post,put,delete.这些方法名称和标签是对应的。也就是还有@Put,@Post等标签。
到现在为止我们从这个示例中能提炼出来的显眼的对象有这么几个:Component,Application,Router,Resource.
这几个组件是通过Restlet内部的机制联合在一起的。具体怎么连结在一起,我们暂时无法全部知道。继续需要用户引导文档(rf-user-guider-2.2.3)的帮助.
这部分的内容留在下一篇博客中继续探索。