- 浏览: 80910 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
neptunecai:
2.创建nutch2.1的编译环境 这部分能详细些吗?比如:T ...
Nutch2.1 in eclipse
由于自己最近正在学习REST,并需要使用Restlet做ROA的开发。所以把自己的一些事件心得写下,以便以后查阅,也希望可以帮助到一些同学。
首先Rest的概念就不提了。主要就是讲关于如何更好,更简单的利用http协议中的一些基本方法,做统一接口,来实现我们基于资源的架构开发。其中Restful web service 书中也说道。很多时候我们都容易陷入把开发变复杂的情况,比如使用SOAP,这种特殊信封去包装我们的数据。而一些尝试开发Rest的人们,也容易由于经验的印象,陷入架构的变异,开发出Rest-RPC风格或者纯RPC风格的程序。而看了很多在java方面关于Rest原则的架构设计,觉得Restlet基本遵循了Rest的原则,而且相对比较简单。所以尝试拿来写一些简单程序开始入手。当然在Rest1.0时代也有很多达人写了很多实战例子。其中,在iteye社区中就有一位ajax达人写了长长33篇关于Restlet1.0的实例,其中较多都是结合spring使用。而本人几下Restlet2.0的一些实践例子,毕竟想把关于2.0方面的经验分享给大家,也因为1.0中的很多类在2.0中都已经废弃,而且现在官网上主要放着的是2.0和2.1的get started。总要与时俱进的嘛,哈哈。好了,言归正传,让我们开始吧。
Restlet2.0中最近的是从Restlet,Resource和respresentation三个包中展开。其他的一些都是富有一些特殊功能的类而其中基于Uniform和UniformResource的两个接口就是其中的核心。
这篇文章下的项目主要实现就是通过一个test,获取放入webapp中resource,并返回hello world的功能。该项目的名称我们命名为RestLetServlet。在开发之前,需要加入如下jar
org.restlet.jar(restlet核心包,不管是JEE或者是JSE都是必需的)
org.restlet.ext.servlet.jar(JEE下servlet专用包)
junit4.8.2.jar(用于编写单元测试,其实直接使用浏览器也是可以的。)
具体实现如下:
首先我们创建一个Resource。原本在1.0中时继承Resource这个类的。但是在2.0中Resource已经废弃,使用实现UniformResource接口的ServerResource类
这里使用Get的annotation,方便了对统一接口的指引和调用。而在1.0中,所有的Resource都要重写各种respresent方法才可以。如post->acceptRepresentation;put-> storeRepresentation;delete-> removeRepresentations等。
然后我们就要创建一个application类把resource放入其中。这里的application其实就是实现了Uniform接口的类。所以在服务端这边那两个接口是大头。很多子类都是从上面的两个接口演变出来的。
然后在web.xml下添加如下代码:
这样我们熟悉的服务端就建立完成了。
如上,我们的资源路径就定型了。是基于当前项目的RestLetServlet(而对应的application在这里是所有路径都可以的,在JSE下,这个路径就是各种Application的路径了。)下的getHello资源。把编写的项目放入tomcat或者任何servlet容器即可。
然后附上测试代码:
启动容器,然后使用测试代码运行,在console就可以看到hello world了。
这里的test其实就是模拟了浏览器的功能,所以其实也可以直接向浏览器URL地址栏输入上面的路径依旧可以得到hello world。
这里仅仅是实现了一个get方法的操作。而在webapp下,由于HTML4和HTML5本身设计上的限制。我们不能使用put和delete这两种方法。也不能使用header和options两个辅助方法。所以其他的一些在webapp大多这些方法的使用都是从post进行模拟出来。在restful web service下也指出这个是不得已的演变,只能使用RPC风格进行开发。希望在以后可以有其他的方法解决这个问题。
当然在基于java客户端的clientResource下,那些方法都是可以使用的。所以相对来说学习JSE的restlet可以对rest的核心和编程原则更加的了解和熟悉。不容易让自己走弯路。毕竟也有很多人开发webapp时,看到post可以解决所有的问题,于是就走向了以前开发webapp的老路了。而忽略了rest的真正意义。
首先Rest的概念就不提了。主要就是讲关于如何更好,更简单的利用http协议中的一些基本方法,做统一接口,来实现我们基于资源的架构开发。其中Restful web service 书中也说道。很多时候我们都容易陷入把开发变复杂的情况,比如使用SOAP,这种特殊信封去包装我们的数据。而一些尝试开发Rest的人们,也容易由于经验的印象,陷入架构的变异,开发出Rest-RPC风格或者纯RPC风格的程序。而看了很多在java方面关于Rest原则的架构设计,觉得Restlet基本遵循了Rest的原则,而且相对比较简单。所以尝试拿来写一些简单程序开始入手。当然在Rest1.0时代也有很多达人写了很多实战例子。其中,在iteye社区中就有一位ajax达人写了长长33篇关于Restlet1.0的实例,其中较多都是结合spring使用。而本人几下Restlet2.0的一些实践例子,毕竟想把关于2.0方面的经验分享给大家,也因为1.0中的很多类在2.0中都已经废弃,而且现在官网上主要放着的是2.0和2.1的get started。总要与时俱进的嘛,哈哈。好了,言归正传,让我们开始吧。
Restlet2.0中最近的是从Restlet,Resource和respresentation三个包中展开。其他的一些都是富有一些特殊功能的类而其中基于Uniform和UniformResource的两个接口就是其中的核心。
这篇文章下的项目主要实现就是通过一个test,获取放入webapp中resource,并返回hello world的功能。该项目的名称我们命名为RestLetServlet。在开发之前,需要加入如下jar
org.restlet.jar(restlet核心包,不管是JEE或者是JSE都是必需的)
org.restlet.ext.servlet.jar(JEE下servlet专用包)
junit4.8.2.jar(用于编写单元测试,其实直接使用浏览器也是可以的。)
具体实现如下:
首先我们创建一个Resource。原本在1.0中时继承Resource这个类的。但是在2.0中Resource已经废弃,使用实现UniformResource接口的ServerResource类
public class HelloResource extends ServerResource { @Get public String getHello() { return "Hello World"; } }
这里使用Get的annotation,方便了对统一接口的指引和调用。而在1.0中,所有的Resource都要重写各种respresent方法才可以。如post->acceptRepresentation;put-> storeRepresentation;delete-> removeRepresentations等。
然后我们就要创建一个application类把resource放入其中。这里的application其实就是实现了Uniform接口的类。所以在服务端这边那两个接口是大头。很多子类都是从上面的两个接口演变出来的。
public class HelloApplication extends Application { @Override public Restlet createInboundRoot() { Router router = new Router(getContext()); router.attach("/getHello", HelloResource.class); return router; } }
然后在web.xml下添加如下代码:
<servlet> <servlet-name>RestletServlet</servlet-name> <servlet-class>org.restlet.ext.servlet.ServerServlet</servlet-class> <init-param> <!-- Application class name --> <param-name>org.restlet.application</param-name> <param-value>com.restlet.application.HelloApplication</param-value> </init-param> </servlet> <!-- Catch all requests --> <servlet-mapping> <servlet-name>RestletServlet</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping>
这样我们熟悉的服务端就建立完成了。
如上,我们的资源路径就定型了。是基于当前项目的RestLetServlet(而对应的application在这里是所有路径都可以的,在JSE下,这个路径就是各种Application的路径了。)下的getHello资源。把编写的项目放入tomcat或者任何servlet容器即可。
然后附上测试代码:
public class HelloTest { @Test public void testGetHello() throws Exception { ClientResource resource = new ClientResource("http://localhost:8080/RestLetServlet/getHello"); resource.get().write(System.out); } }
启动容器,然后使用测试代码运行,在console就可以看到hello world了。
这里的test其实就是模拟了浏览器的功能,所以其实也可以直接向浏览器URL地址栏输入上面的路径依旧可以得到hello world。
这里仅仅是实现了一个get方法的操作。而在webapp下,由于HTML4和HTML5本身设计上的限制。我们不能使用put和delete这两种方法。也不能使用header和options两个辅助方法。所以其他的一些在webapp大多这些方法的使用都是从post进行模拟出来。在restful web service下也指出这个是不得已的演变,只能使用RPC风格进行开发。希望在以后可以有其他的方法解决这个问题。
当然在基于java客户端的clientResource下,那些方法都是可以使用的。所以相对来说学习JSE的restlet可以对rest的核心和编程原则更加的了解和熟悉。不容易让自己走弯路。毕竟也有很多人开发webapp时,看到post可以解决所有的问题,于是就走向了以前开发webapp的老路了。而忽略了rest的真正意义。
发表评论
-
jetty 对请求头的限制
2014-02-13 14:30 5589当浏览器发起请求时 出现http code 413 问题 fu ... -
java 最基础的设置介绍
2013-04-15 23:05 1238用java不长不短快5年了,最近在看一些基础的书籍,也想起很久 ... -
Hessian 初体验
2013-03-27 17:36 1155Hessian 官网:http://hessian.cauch ... -
Nutch2.1 in eclipse
2013-03-10 00:22 9408Nutch2.1 in eclipse 主要目的: 1. 将 ... -
LDAP connection issue
2012-10-23 16:25 1697Problem1: Sometimes we can not ... -
restlet2.0学习——请求超时设置
2012-09-26 11:01 2297一般,我们在请求一个rest service的时候,总是希望可 ... -
[转载]checkStyle使用手册
2012-08-23 20:28 6827Checkstyle是SourceForge下的一个项目,如名 ... -
[转载]高性能JAVA开发之内存管理
2012-08-13 21:53 1311这几天在找一个程序的bug,主要是java虚拟机内存溢出的问题 ... -
[转载]How to write LDAP search filters
2012-08-10 10:57 1389This document outlines how to g ... -
restlet2.0学习(extend)-restlet日志信息写入log4j中
2012-08-07 15:32 4008使用过restlet的人都知道,restlet使用的是JDK的 ... -
log4j级别输出
2012-08-03 11:12 4276我们知道: log4j.logger.XX cover ==& ... -
restlet2.x与restlet1.x交互
2012-08-01 10:01 1226在一般的情况下,我们使用restlet客户端向服务端发起请求时 ... -
log4j配置
2012-05-30 11:36 1397log4j.rootLogger 根路径下的所有logger输 ... -
Restlet2.0学习——简单WebApp多Application与表单提交
2012-05-23 23:16 3531之前我们提到过简单的WebApp实现,使用的是一个applic ... -
Restlet2.0学习——文件路径访问
2012-05-22 14:42 1199由于就是官方的实例照搬了一下,简单尝试没有问题。就先把代码贴出 ... -
Restlet2.0学习——文件路径访问+BASIC认证
2012-05-22 14:38 1730这篇主要是让我们学习对于一些静态页面如何更加简单有效的去访问他 ... -
对RAM做简单的池化实现
2012-05-22 13:59 1514首先由于项目的关系需要使用IBM的Rational Asser ... -
HTMLPOST和GET编码问题(深入篇)
2011-07-07 02:12 11365浏览器 IE/FireFox -------——----> ...
相关推荐
Restlet2.0用户指南
restlet2.0版本jee源码,例子,jar包,api等内容
NULL 博文链接:https://sb33060418.iteye.com/blog/1768621
简单做了一个rsh框架的集成,知道这个而且需要欢迎下载,大家有需要的下载了给点宝贵意见。
restlet框架所需的所有jar包,可以用来进行restlet开发。
RESTLET框架学习书籍
restlet2.1学习笔记项目代码
使用restlet实现了最简单的restful webservice,可以直接部署运行。可以作为restful webservice开发的基础环境。
restlet2.0 Restlet Caused by: java.lang.ClassNotFoundException: com.sun.syndication.feed.synd.SyndFeed java.lang.NoClassDefFoundError: com/sun/syndication/feed/synd/SyndFeed
android-restlet 一个非常简单的演示/教程,展示了如何在Android下使用Restlet和Gson库这是什么? 这是一个项目教程,可帮助您了解如何使用Restlet框架( )以及如何通过使用Gson Google框架( )。 您可以将该项目...
Restlet包括Restlet API和Noelios Restlet Engine(NRE)两部分,NRE是对Restlet API的一种参考实现。这种划分,使得不同实现可以具有同样的API。NRE包括若干HTTP服务器连接器(HTTP server connector),它们都是...
restlet相关文档
一个简单的Restlet开发框架的Basic认证的例子
共三篇文章,第一篇讲述了基于JAX-RS的rest服务开发,第二篇讲基于Restlet的rest服务开发,第三篇讲restlet与spring整合
org.restlet.jar
Restlet包括Restlet API和Noelios Restlet Engine(NRE)两部分,NRE是对Restlet API的一种参考实现。这种划分,使得不同实现可以具有同样的API。NRE包括若干HTTP服务器连接器(HTTP server connector),它们都是...
RESTLET开发实例(三)基于spring的REST服务
Restlet是Rest的框架。这是一个Restlet的API chm格式文档,快速搜索
Restlet Client插件是一款运行在chrome内核浏览器上的Web服务测试插件,该插件主要用于测试各种Web服务,能查看网站基本信息、浏览网页代码并能发送HTTP请求来测试网站Web服务,同时支持自动化API场景。用户在安装了...