概述

最近项目想要重构api调用,由原来传统soap rpc web service 重构为restful web service.

在众多的rest架构中,Jersey,Resteasy,Restlet,Apache CXF, 考虑到集成能力,稳定性,安全性,易用性,维护以及配置,选择Resteasy.Resteasy是JBoss的一个开源项目,是ax-rs规范的一个完整实现,其开发易上手.

demo

开始搭建一个helloworld.

准备:jdk8

pom.xml

 <!--resteasy --><dependency><groupId>org.jboss.resteasy</groupId><artifactId>resteasy-jaxrs</artifactId><version>3.1.3.Final</version></dependency>

不使用application

web.xml

     <!-- Auto scan REST service 扫描注册rest服务--> <context-param> <param-name>resteasy.scan</param-name> <param-value>true</param-value> </context-param> <context-param> <param-name>resteasy.resources</param-name> <param-value>stu.resteasy.TestResource</param-value> </context-param> <!-- this need same with resteasy ser
vlet url-pattern 访问目录,要与servle-mapping对应,可不设--> <context-param> <param-name>resteasy.servlet.mapping.prefix</param-name> <param-value>/rest</param-value> </context-param> <!--listener 监听器--><listener> <listener-class> org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap  </listener-class> </listener> <!--servlet--><servlet> <servlet-name>resteasy-servlet</servlet-name> <servlet-class> org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher  </servlet-class> </servlet> <servlet-mapping> <servlet-name>resteasy-servlet</servlet-name> <url-pattern>/rest/*</url-pattern> </servlet-mapping> 

此段注释掉也能成功

    <context-param> <param-name>resteasy.scan</param-name> <param-value>true</param-value> </context-param> 

官方注释:Automatically scan WEB-INF/lib jars and WEB-INF/classes directory for both @Provider and JAX-RS resource classes (@Path, @GET, @POST etc..) and register them

注释掉或者设置为false,还是会成功,后来才知道这个resteasy.scan在3.0版本后已经过时了,现在resource可以自扫描.推荐Use a servlet 3.0 container and the ResteasyServletInitializer.

配置资源

package stu.resteasy;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.Response;  @Path("/testResource")
public class TestResource {  @GET @Path("/{param}")  public Response printMessage(@PathParam("param") String msg) {  String result = "Restful example : " + msg;  return Response.status(200).entity(result).build();  }  } 

访问:localhost:8080/ rest/helloworld

打印:helloworld

基于application控制

web.xml

    <!-- this need same with resteasy servlet url-pattern 访问目录,要与servle-mapping对应,可不设--> <context-param> <param-name>resteasy.servlet.mapping.prefix</param-name> <param-value>/rest</param-value> </context-param> <!--servlet--><servlet> <servlet-name>resteasy-servlet</servlet-name> <servlet-class> org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher  </servlet-class> <init-param>     <param-name>javax.ws.rs.Application</param-name> <param-value>stu.resteasy.TestApplication</param-value> </init-param>      </servlet> <servlet-mapping> <servlet-name>resteasy-servlet</servlet-name> <url-pattern>/rest/*</url-pattern> </servlet-mapping> 

以上可配置多个

application

package stu.resteasy;
import java.util.HashSet;
import java.util.Set;
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;@ApplicationPath("/rest")
public class TestApplication extends Application {  private static Set<Class<?>> classes = new HashSet<Class<?>>();@Overridepublic Set<Class<?>> getClasses() {//注册服务,可注册多个classes.add(TestResource.class);classes.add(TestResourceA.class);return classes;}
}

此处的@ApplicationPath主要设置resource的资源跟路径

http://localhost:8080/rest/testResource/helloworld
      打印:helloworld

注意:

假如使用ResteasyServletInitializer(容器启动)容器启动空的web.xml,不需要配置任何配置,依赖注解@ApplicationPath

(ResteasyServletInitializer初始化将每个application生成servlet交于org.jboss.resteasy.plugins.server.servlet.HttpServlet30Dispatcher)

ResteasyServletInitializer只支持servlet3.0以上,所以使用的servlet容器必须是3.0以上,比如jetty8.0,tomcat7.

resteasy学习相关推荐

  1. Dubbo + RestEasy 实现文件上传与下载

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. Dubbo+RestEasy实现文件上传与下载 Dubbo+RestEasy实现文件上传与下载 Ma ...

  2. RestEasy编写API

    我是从这篇文章学习的RESTEASY https://www.cnblogs.com/langtianya/p/7624647.html 1. 现实需求 任务:发送请求给服务器,解析请求,返回结果 请 ...

  3. RESTEasy 参数注解

    https://www.cnblogs.com/chen-lhx/p/5599806.html 在第一RESTEasy教程我们已经学习了基本的Web服务和休息我们已经测试了一个简单的REST风格的We ...

  4. RestEasy 调用Rest接口使用详解

    最近项目中需要调用其他项目的Rest接口,之前一直在使用Apache的httpclient工具,该工具使用起来不是很方便,各种try{......} catch{......}结构,造成了代码量很大, ...

  5. 带有RESTEasy + JAXB + Jettison的JSON示例

    RESTEasy使用Jettison JSON库在JSON之间来回映射JAXB注释对象. 在本教程中,我们向您展示如何将带​​有JAXB注释的对象转换为JSON格式并将其返回给客户端. 杰克逊(Jac ...

  6. 使用RESTEasy 和 Jersey创建JAX-RS CRUD Rest Web服务

    在本教程中,我们将学习如何使用 RESTEasy 和 Jersey 创建 JAX-RS Get.POST.PUT 和 DELETE Rest Web 服务. 我们将建造什么? 我们正在构建一个简单的  ...

  7. java入门 慕路径,Java入门基础知识总结学习教程大全【必看经典】

    类型的表达式,是循环条件,表达式3是党执行了一遍循环之后,修改控制循环的变量值. ??? for语句的执行过程是这样的:首先计算表达式1,完成必要的初始化工作:然后判断表达式2的值,如果表达式的值为t ...

  8. Java EE学习心得

    –Java EE学习心得   1.    称为编程专家的秘诀是: 思考-----编程--------思考------编程--.. 编程不能一步到位,不能一上来就编,必须先思考如何写,怎样写?然后再编程 ...

  9. FastAI 2019课程学习笔记 lesson 2:自行获取数据并创建分类器

    文章目录 数据获取 google_images_download 的安装和使用 挂载google 个人硬盘到Google colab中 删除不能打开文件 创建ImageDataBunch 训练模型 解 ...

最新文章

  1. Android之Fragment使用简介
  2. UA MATH566 统计理论10 Bootstrap简介
  3. ubuntu编译内核重启出现:gave up waiting for root device
  4. python正则表达式面试_【剑指offer】面试题19. 正则表达式匹配
  5. Angular面试题三
  6. 计算机osta试题,OSTA试题库.doc
  7. 瞎扯数学分析-微积分
  8. 怎么学ui设计入门?怎样才能少走弯路?
  9. 设计模式之观察者模式PHP实现
  10. Java基础知识总结(一)创建和销毁对象
  11. 区块链大本营专访 | MiiX全球技术开发者超级大赛,36小时,3支获胜队伍有哪些不一样的感受?
  12. python 经典图书排行榜_书榜 | 计算机书籍(1.7-1.13)销售排行榜
  13. EXCEL兼容性检查
  14. LXDE vs XFCE:哪个是更好的轻量级桌面环境?
  15. Requirement already satisfied:
  16. tree traversal (树的遍历) - postorder traversal (后序遍历)
  17. GPU计算主板学习资料保存第735篇:基于3U VPX的AGX Xavier GPU计算主板
  18. 《脚本》Python在线百度文库爬虫(免下载券)
  19. Jrebel+springboot2.0 启动失败问题
  20. python:python基础语法三,列表、元组、字典、集合

热门文章

  1. codevs 1507 酒厂选址 题解报告
  2. IntelliJ Idea 常用10款插件(提高开发效率)
  3. 寻找走失多年的儿童,这个算法让父母看到孩子长大的模样
  4. watching memory
  5. WordPress上传图片提示:服务器无法处理图像
  6. 基于JAVA房屋租赁网站计算机毕业设计源码+系统+lw文档+部署
  7. 汇编语言调试DEBUG命令
  8. linux用shell冒泡排序,Linux Shell冒泡排序
  9. A.图机器学习(GML)图神经网络(GNN)原理和代码实现(前置学习系列二)
  10. 【甄选靶场】Vulnhub百个项目渗透——项目三十三:Money-Heist-catch-me-if-you-can(密码学)