最新消息:

webservice笔记4——Restlet开发restful webservice教程

JAVA 大步 2331浏览 0评论

Restlet的简单介绍

说道java开发Restful webservie,除了JAX-RS,还有一个就是Restet。Restlet个人感觉要比JAX-RS更灵活,当然,也更复杂点。

特点

和JAX-RS类似,也可以使用注解。但是没JAX-RS那么多注解,很少,Restlet的所有注解类有(有@符号的就是):

Restlet有一个特点,就是可以既作为web应用,放到tomcat之类的容器中,响应http请求。这种方式和JAX-RS差不多,都是通过一个类似于拦截器的servlet将请求拦截,然后转发给Restlet写的应用处理。web.xml中配置如下:
同时,Restlet自带了一个http服务器的功能,也就是说Restlet写的webservice,我们可以导出为jar(运行main函数),直接运行jar文件。如下:
编译为jar文件后,运行截图:

按ctrl+c终止。

开发的时候遇到的问题

1.jar库的版本

编译过程导入 org.restlet的相关jar库的时候,必须选择是jee的而不是是jse的。否则接收请求后会报错,如下:

 2.导入为jar的问题

如果编译的jar运行的时候有报错“中没有主清单属性”,则说明你MANIFEST.MF(清单文件)放错了位置。
你MANIFEST.MF(清单文件)必须放在 src/main/resources/META_INF/

实例:

Restlet使用的jar库也比较多,所以还是使用maven管理:
pom.xml:
web.xml:
当Restlet项目是放在tomcat容器中,则需要在web.xml中配置一个类似拦截器的servlet来拦截和转发请求。
Adage:
javabean类:
Adages :
存放Adage的list,
注意:为了线程安全,使用了CopyOnWriteArrayList来作为集合存放,同时使用了 AtomicInteger。
XmlAllResource :
这是个资源类,必须继承ServerResource类。
可以使用@Get之类的注解,表示在接收到该类型的http请求的 时候,使用该方法做出响应。
但是这个响应的类型没有JAX-RS方便,需要自己手动写方法生成xml或json
返回整个list,以xml的形式。
JsonAllResource
资源类
返回整个list,以json形式
XmlOneResource :
这是个资源类,必须继承ServerResource类。
返回单条记录,以xml的形式。
CreateResource
资源类
响应post请求,用于创建新记录
返回TEXT_PLAIN (纯文本)
UpdateResource
资源类
响应put请求,用于更新记录
AdagesApplication
Application类
这里使用了一个匿名类来处理DETELE请求,用于删除记录。
该类还用来配置路由。
Main
如果你是将Restlet放到tomcat之类的容器,则不需要这个类。
如果是像Restlet编译为jar文件,单独作为httpserver来响应http请求,则需要这个类。当然也可以将main方法放到其他的类里面,这里为了方便区分,所以单独放到一个java文件中。
在tomcat下运行的效果:
运行后访问的地址:
http://localhost:8182/adages/
获取单个的xml记录:
http://localhost:8182/adages/xml/1

编译为jar文件后,运行效果:
访问:
http://localhost:8080/xml
获取单个的xml记录:

按ctrl+c终止。
点击下载完整demo

 

 

转载请注明:大步's Blog » webservice笔记4——Restlet开发restful webservice教程

SiteMap