最近一个项目用到了webservice,决定用rest来实现,发现这方面的中文资料真的是不多。经过自己一番辛苦,终于把项目搞定,在这里简单的自己的学习的过程记录一下,供入门的兄弟参考一下。
一、rest简介:
REST 是英文 Representational State Transfer 的缩写,有中文翻译为“具象状态传输”。REST 这个术语是由 Roy Fielding 在他的博士论文《 Architectural Styles and the Design of Network-based Software Architectures 》中提出的。REST 并非标准,而是一种开发 Web 应用的架构风格,可以将其理解为一种设计模式。REST 基于 HTTP,URI,以及 XML
这些现有的广泛流行的协议和标准,伴随着 REST,HTTP 协议得到了更加正确的使用。
二、实现方式:
Apache 的 CXF 以及 JBoss 的 RESTEasy(待续)
(RESTEasy)http://www.jboss.org/file- access/default/members/resteasy/freezone/docs/1.1.GA/userguide/html_single/index.html
三、入门实例:
http://developer.51cto.com/art/200912/172185.htm(网上很多)
涉及原理及数据绑定:http://www.ibm.com/developerworks/cn/java/j-lo-jaxrs/ 一篇不错的文章
jersey实例 Bookkeeping实例 这是两个不错的例子,大家有时间好好看看
四、看了上面的文章以后,感觉项目中只用到了rest其中的一小部分,还有好多东西值得认真学习一下,以便用到以后的项目中。
下面是自己感觉在上面例子中没有提到的一些东西,贴出来供大家参考。呵,仅一家之言啊,有不对的希望大家能提醒小弟:)
调用POST方法时传入实体类,并返回实例类的的写法,以及数据绑定、path映射多个参数。
客户端:
BankInterfaceAgent.java
GenericType<VirementResultInfo> generic = new GenericType<VirementResultInfo>() {};//定义返回的类型(加入泛型)
String id = "virement/" + clientSystemNo + "," + encryptKey +","+ isEncrypted +","+ bankCode;//"/"前为路径,后为参数,参数不能为空,为空则报错
//根据返回状态判断:404未找到;415不允许访问;405字段定义的方法不被允许; (另有文章描述返回状态含义)
try {
resultInfo = r.path(id)
.accept(MediaType.APPLICATION_XML) //返回的接收类型
.type(MediaType.APPLICATION_XML)//服务器入参类型,必传
.post(generic,transactionInfo); //直接传送实体类
} catch(Exception e) {
。。。。。。。
服务器端:
BankServiceAgent.java
//注意:数据传输时的序列化与反序列化由实例类绑定JAXBELEMENT实现,实体类必须绑定(在实例类中加入@XmlRootElement)
@Path("/virement/{clientSystemNo},{encryptKey},{isEncrypted},{bankCode}/") //路径和参数,注意格式(符合jax- rs311规范)
@POST //方式
@Consumes(MediaType.APPLICATION_XML) //传入参数形式定义
@Produces(MediaType.APPLICATION_XML) //返回结果形式定义
public VirementResultInfo virement( //直接返回实体类
@PathParam("clientSystemNo") String clientSystemNo,
@PathParam("encryptKey") String encryptKey,
@PathParam("isEncrypted") boolean isEncrypted,
@PathParam("bankCode") String bankCode,
TransactionInfo transInfo
) throws Exception
{
System.out.println("==========进入方法BankServiceAgent:virement():"+ (new Date(System.currentTimeMillis())) + "/n");
logger.info("==========进入方法com.iss.itreasury.bi.rest.services.virement()" + (new Date(System.currentTimeMillis())) + "/n");
VirementResultInfo resultInfo = new VirementResultInfo();
五、参考文档:
jsr311 API:https://jsr311.dev.java.net/nonav/releases/1.0/index.html
jersey实例:https://jersey.dev.java.net/
使用JAX-RS简化REST应用开发
:http://www.bianceng.cn/Programming/Java/201101/23660_6.htm
Bookkeeping.rar实例在资源下载中。。。
好了,先写这么多,慢慢完善,大家如果有什么好的帖子要发上来啊,共同学习:)
分享到:
相关推荐
JAX-RS允许开发者使用注解来定义Web服务接口,简化了开发过程。常见的实现有Jersey、RESTEasy和Apache CXF。 2. **JAX-WS**(Java API for XML Web Services)是Java平台上的SOAP(Simple Object Access Protocol)...
JAX-RS通过注解简化了REST服务的创建。主要注解包括: - `@Path`: 用于定义资源路径,如`@Path("/hello")`表示资源的URL路径。 - `@GET`, `@POST`, `@PUT`, `@DELETE`: 分别对应HTTP的四种基本操作,用于处理不同...
综上所述,JAX-WS和JAX-RS都是Java平台中处理Web服务的重要工具,但它们的侧重点不同。JAX-WS专注于SOAP协议的Web服务,而JAX-RS则面向RESTful风格的API设计。了解并熟练掌握这两个API,对于Java开发者来说,意味着...
在开发基于Java的RESTful Web服务...综上所述,“Jax-RS所需要的依赖jar”集合包含了构建、测试和部署JAX-RS REST服务所需的全部组件,对于Java开发者来说,这是一个宝贵的资源,可以帮助他们快速启动和运行REST项目。
这个压缩包"SpringMVC精品资源--JAX-RS & SpringMVC supported maven build.zip"显然是一个关于这两个框架的学习资源集合,特别是针对使用Maven构建的项目。 首先,SpringMVC是Spring框架的一部分,它是基于模型-...
1. **集成方式**: 通常通过Spring的Servlet容器如Tomcat或Jetty来部署JAX-RS应用,Spring负责应用的上下文管理和依赖注入,JAX-RS处理REST接口。 2. **Spring REST**: 使用Spring MVC的`@RestController`注解创建...
1. **JAX-RS基础**:JAX-RS是Java标准JSR 311和JSR 339的一部分,用于简化创建RESTful Web服务。它通过注解如`@Path`, `@GET`, `@POST`, `@PUT`, `@DELETE`等,使得开发者可以直接在Java方法上声明HTTP操作。 2. **...
本资源“JAX-RS入门jar包集合”包含了开始学习和使用JAX-RS所需的基本库文件,这些jar包将帮助开发者快速搭建REST服务环境。下面我们将详细讲解JAX-RS的核心概念和关键组件,以及如何利用这些jar包进行实际开发。 1...
JAX-RS 2.1规范的最终版发布于2017年7月13日,由编辑Pavel Bucek和Santiago Pericas-Geertsen负责,可通过邮件组jaxrs-spec@javaee.groups.io进行评论反馈。该规范的发布由Oracle Corporation支持,它进一步强化了...
JAX-RS(Java API for RESTful Web Services)是一个Java标准,它简化并促进了RESTful Web服务的开发。JAX-RS 2.0作为该标准的更新版本,引入了新的注解和方法来支持RESTful服务的构建。从定义资源到处理HTTP请求,...
JAX-RS通过注解简化了服务的开发,例如`@Path`定义服务端点,`@GET`、`@POST`等定义HTTP方法。 **3. Apache CXF** Apache CXF是一个开源的Web服务框架,它支持SOAP(Simple Object Access Protocol)和RESTful两种...
REST 简介 REST 是英文 Representational State Transfer 的缩写,有中文翻译为“具象状态传输”。REST 这个术语是由 Roy Fielding 在他的博士论文 《 Architectural Styles and the Design of Network-based ...
通过采用JAX-RS标准,开发者能够更轻松地构建、测试和维护基于REST的服务。 #### JAX-RS与Java标注 JAX-RS的一个重要特点是利用了Java SE 5中引入的标注功能。这些标注简化了Web服务客户端和服务端的开发流程。...
JAX-RS是Java API for RESTful Web Services的简称,它是Java平台上的标准API,用于简化RESTful服务的开发。本文将深入探讨如何使用JAX-RS来构建RESTful Web Service,并结合实际代码示例进行解析。 首先,理解...
RESTlet是一个开源框架,专门用于构建RESTful(Representational State Transfer)应用程序,而JAX-RS(Java API for RESTful Web Services)则是Java平台上的标准,用于简化创建RESTful服务。在这里,我们将深入...
在使用"jaxrs-ri-2.26.zip"时,你可以通过解压文件,查看示例代码、文档或运行测试来学习如何利用JAX-RS 2.26创建RESTful服务。这有助于你理解API的工作原理,以及如何在实际项目中应用这些技术。
总的来说,`JAX-RS-demo` 项目为学习和理解 JAX-RS 提供了一个实践平台,帮助开发者快速上手 RESTful Web 服务的开发。通过研究这个项目,你可以深入了解 RESTful 架构原则以及 JAX-RS 如何在 Java 中实现这些原则。