首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Apache Wink 和 REST(2)Project Jersey

Apache Wink 和 REST(2)Project Jersey

Project JerseyProject Jersey 是 Sun® 公司提供的、用于构建 RESTful Web 服务的、具有生产质量的双重授权(dual-licensed)开源 JAX-RS 参考实现。这意味着它不仅仅是一个参考实现,只提供允许开发人员轻松定制和扩展的 APIs。Jersey 作为 Sun 的 GlassFish 应用程序服务器下载的一部分提供。               
嵌入式容器Jersey 通常部署在一个 servlet 容器中,但不支持 Java 程序中的嵌入式操作模式。以嵌入式模式运行 JAX-RS 服务比较简单,只需几行代码。您还可以将这个可嵌入的容器轻松用于单元测试。                       
客户端 APIJersey 客户端 API 是一个复杂的、基于 Java 的高级 API,用于调用任何 RESTful Web 服务,而不仅仅是与 JAX-RS 兼容的服务。但是,JAX-RS 开发人员应该会发现 Jersey 客户端 API 似曾相识,使用方便。Jersey 客户端 API 宣称其拥有 3 个重要目标:                       
  • 在客户端上封装 Uniform Interface Constraint 的 REST 约束。
  • 允许与服务器端 RESTful Web 服务轻松互操作。
  • 利用客户端的 JAX-RS API 概念和工件。
Jersey 客户端 API 还支持一个可插入 HTTP 实现(比如 HttpURLConnection 和 Apache HTTP 客户端)。总的来说,Jersey 客户端 API 允许您高效地实现一个基于 REST 的客户端解决方案。                       
清单 1 是一个 Jersey 客户端代码示例,它支持使用表单参数发送一个 POST 请求并接收一个作为 JAXB 对象的响应。                       
清单 1. Jersey 客户端代码
1
2
3
4
5
6
7
8
9
Form form = new Form();
f.add(“a”, “dim”);
f.add(“b”, “sum”);
Client client = Client.create();
WebResource resource =   client.resource(“http://localhost:8080/formpost”);
JAXBBean bean = resource.
    type(MediaType.APPLICATION_FORM_URLENCODED_TYPE).
    accept(MediaType.APPLICATION_JSON_TYPE).
    post(JAXBBean.class, form);




注意,有一点很重要:如果这段代码使用 HttpURLConnection 编写,则会涉及许多序列化表单变量并将响应反序列化给 JAXB bean 的工作。                       
侦听器框架Jersey 提供一个基于过滤器的侦听器框架,该框架允许注册两种类型的过滤器:                       
  • 容器过滤器。容器过滤器过滤资源过滤器前面的请求。
  • 资源过滤器。资源过滤器过滤容器过滤器前面的响应。
数据格式支持与其他 JAX-RS 实现一样,Jersey 提供一些 JAX-RS 扩展模块来支持常用格式,包括 Atom、JSON 和 MIME 多部分数据。Atom 支持需要 Apache Abdera 上的一个依赖项以及 jersey-atom-abdera 模块。                       
组件集成Jersey 目前对以下两个依赖项注入框架提供基于扩展的支持:Spring 框架和 Google Guice 框架。                       
  • Spring 框架。Jersey 中的 Spring 支持需要 jersey-spring 模块上的一个依赖项。Spring 支持通过在 web.xml 文件中引用 SpringServlet 类来启用。
  • Google Guice 框架。Guice 支持通过在 web.xml 文件中引用 Guice 过滤器 GuiceFilter和一个 Guice 特有的 ServletContextListener 来启用。
返回列表