1.建一个maven web项目

新建一个maven项目,next,第一个框不要勾选

选择maven-archetype-webapp,建一个web项目

键入项目组织id与项目id

一般此时搭建的只是最基本的骨架,还缺了很多东西,我们可以自己按需求去增加。

右键项目,build path,编辑jre,选择默认

web项目的基本构造就出来了

再新建目录,在main和test下面新建resources,然后再build path里的source添加关联

最后再增加服务器jboss的包,整个web项目框架就基本没有报错的搭建起来了

2.最基本的讲完了,现在开始做一个resteasy的简单实例。

2.1首先,配置pom.xml,为项目添加下载resteasy的jar,下面给出jar的配置版本(可去网上查看最新版本)

org.jboss.resteasy

resteasy-jaxrs

2.2.1.GA

org.projectlombok

lombok

1.16.10

lombok是一个用来简化代码的工具,后面给出的代码有用到,也可以不用,但要自己写set,get及类的初始化

ps1:此时可能出现的错误,提示缺少依赖包,如下图,解决办法:右键maven---update project 一下,使新的包在本地生效,一般就能解决问题。

ps2:如果update项目后报JavaServer Faces 2.0 requires Dynamic Web Module 2.5 or newer之类的错误,就是你的web版本太旧,此时项目右键properties—project facets—Dynamic Web Module,修改为3.0的版本,一般就能解决。

ps3:如果在面版不能修改,此时,你就需要去底层修改web的版本了,首先更改maven生成的web.xml的web-app标签内容,再去项目底层demo\.settings路径下,修改org.eclipse.wst.common.project.facet.core.xml文件的配置,将其都改为3.0的版本。下面分别为旧的web.xml,新的web.xml,以及.core.xml的配置

/p>

"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"

"http://java.sun.com/dtd/web-app_2_3.dtd">

Archetype Created Web Application

http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"version="3.0">

2.2配置web.xml,注册resources的模式有三种:

2.2.1手动注册resources的模式

/p>

"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"

"http://java.sun.com/dtd/web-app_2_3.dtd">

Archetype Created Web Application

resteasy.resources

com.fengyuan.restapi.UserService

resteasy.servlet.mapping.prefix

/service

org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap

resteasy-servlet

org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher

resteasy-servlet

/service/*

2.2.2手动指定Application的模式

/p>

"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"

"http://java.sun.com/dtd/web-app_2_3.dtd">

Archetype Created Web Application

resteasy.servlet.mapping.prefix

/service

resteasy-servlet

org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher

javax.ws.rs.Application

com.mk.rest.RestApplication

resteasy-servlet

/service/*

2.2.3自动Scan的模式,我使用这种模式,启动项目时,会报类似下面的错误

17:56:16,506 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/demo]] (MSC service thread 1-6) Exception sending context initialized event to listener instance of class org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap: java.lang.RuntimeException: Unable to find a public constructor forclass org.jboss.resteasy.core.AsynchronousDispatcher

at org.jboss.resteasy.plugins.server.resourcefactory.POJOResourceFactory.registered(POJOResourceFactory.java:35) [resteasy-jaxrs-2.3.2.Final.jar:]

at org.jboss.resteasy.core.ResourceMethodRegistry.addResourceFactory(ResourceMethodRegistry.java:121) [resteasy-jaxrs-2.3.2.Final.jar:]

at org.jboss.resteasy.core.ResourceMethodRegistry.addResourceFactory(ResourceMethodRegistry.java:107) [resteasy-jaxrs-2.3.2.Final.jar:]

at org.jboss.resteasy.core.ResourceMethodRegistry.addResourceFactory(ResourceMethodRegistry.java:84) [resteasy-jaxrs-2.3.2.Final.jar:]

at org.jboss.resteasy.core.ResourceMethodRegistry.addPerRequestResource(ResourceMethodRegistry.java:73) [resteasy-jaxrs-2.3.2.Final.jar:]

at org.jboss.resteasy.spi.ResteasyDeployment.registration(ResteasyDeployment.java:367) [resteasy-jaxrs-2.3.2.Final.jar:]

at org.jboss.resteasy.spi.ResteasyDeployment.start(ResteasyDeployment.java:225) [resteasy-jaxrs-2.3.2.Final.jar:]

at org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap.contextInitialized(ResteasyBootstrap.java:28) [resteasy-jaxrs-2.3.2.Final.jar:]

at org.apache.catalina.core.StandardContext.contextListenerStart(StandardContext.java:3392) [jbossweb-7.0.13.Final.jar:]

at org.apache.catalina.core.StandardContext.start(StandardContext.java:3850) [jbossweb-7.0.13.Final.jar:]

at org.jboss.as.web.deployment.WebDeploymentService.start(WebDeploymentService.java:90) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]

at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811)

at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_80]

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_80]

at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_80]17:56:16,567 ERROR [org.apache.catalina.core.StandardContext] (MSC service thread 1-6) Error listenerStart17:56:16,568 ERROR [org.apache.catalina.core.StandardContext] (MSC service thread 1-6) Context [/demo] startup failed due to previous errors17:56:16,603 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-6) MSC00001: Failed to start service jboss.web.deployment.default-host./demo: org.jboss.msc.service.StartException in service jboss.web.deployment.default-host./demo: JBAS018040: Failed to start context

at org.jboss.as.web.deployment.WebDeploymentService.start(WebDeploymentService.java:95)

at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]

at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_80]

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_80]

at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_80]17:56:16,817 INFO [org.jboss.as.server] (DeploymentScanner-threads - 2) JBAS015870: Deploy of deployment "demo.war" was rolled back with failure message {"JBAS014671: Failed services" => {"jboss.web.deployment.default-host./demo" => "org.jboss.msc.service.StartException in service jboss.web.deployment.default-host./demo: JBAS018040: Failed to start context"}}17:56:16,872 INFO [org.jboss.as.server.deployment] (MSC service thread 1-8) JBAS015877: Stopped deployment demo.war in 59ms17:56:16,873 INFO [org.jboss.as.controller] (DeploymentScanner-threads - 2) JBAS014774: Service status report

JBAS014777: Services which failed to start: service jboss.web.deployment.default-host./demo: org.jboss.msc.service.StartException in service jboss.web.deployment.default-host./demo: JBAS018040: Failed to start context17:56:16,875 ERROR [org.jboss.as.server.deployment.scanner] (DeploymentScanner-threads - 1) {"JBAS014653: Composite operation failed and was rolled back. Steps that failed:" => {"Operation step-2" => {"JBAS014671: Failed services" => {"jboss.web.deployment.default-host./demo" => "org.jboss.msc.service.StartException in service jboss.web.deployment.default-host./demo: JBAS018040: Failed to start context"}}}}

原因不明,下面我的自动扫描配置,希望有大神能指点下

/p>

"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"

"http://java.sun.com/dtd/web-app_2_3.dtd">

Archetype Created Web Application

resteasy.scan

true

resteasy.servlet.mapping.prefix

/service

org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap

resteasy-servlet

org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher

resteasy-servlet

/service/*

2.3下面给出简单的java类

新建一个简单的User类,使用了lombok插件注解(可以简化代码,自动生成set,get等方法),lombok的安装方法自行百度,安装后还要在pxm.xml里配置,见上文

packagecom.fengyuan.domain;importlombok.AllArgsConstructor;importlombok.Data;

@Data

@AllArgsConstructorpublic classUser {privateString name;private intage;privateString tel;

}

要发布的资源类UserService

packagecom.fengyuan.restapi;importjava.util.ArrayList;importjava.util.HashMap;importjava.util.List;importjava.util.Map;importjava.util.Map.Entry;importjavax.ws.rs.GET;importjavax.ws.rs.Path;importjavax.ws.rs.PathParam;importjavax.ws.rs.Produces;importcom.fengyuan.domain.User;

@Path("userservice") //服务路径

public classUserService {/*** 初始化三个用户数据,存入map中,key为用户id,value为用户对象*/

static Map userMap = new HashMap<>();static{

User user1= new User("Lee", 24, "138***");

userMap.put(1, user1);

User user2= new User("Cathy", 25, "188***");

userMap.put(2, user2);

User user3= new User("Aaron", 26, "186***");

userMap.put(3, user3);

}/*** 获取指定id的用户

*

*@paramid

*@return

*/@GET

@Path("user/{id}") //具体服务的路径, id是入参

@Produces("application/json") //返回的格式

public User getById(@PathParam("id") Integer id) {return(User) userMap.get(id);

}/*** 以json格式返回所有用户

*

*@return

*/@GET

@Path("users")

@Produces("application/json")public ListgetUsers() {

List userList = new ArrayList();for (Entryuser : userMap.entrySet()) {

userList.add(user.getValue());

}returnuserList;

}

}

测试结果

下面给出Application的模式的代码

packagecom.mk.rest;importjava.util.HashSet;importjava.util.Set;importcom.fengyuan.restapi.UserService;public class RestApplication extendsjavax.ws.rs.core.Application{private Set singletons = new HashSet();/*在这里增加资源类*/

publicRestApplication () {

singletons.add(newMessageRestService());

singletons.add(newUserService());

}

@Overridepublic SetgetSingletons() {returnsingletons;

}

}

后续会边学习边给出resteasy的其他复杂实例,欢迎随时指正~~~~

java easyrest_resteasy简单实例相关推荐

  1. Java Bean 简单实例网页计数器

    Java Bean 设计页面访问统计 JavaBean简单实例 JavaBean实现页面访问统计 项目结构: 知识点: JavaBean 是一种JAVA语言写成的可重用组件,是一个普通的java类. ...

  2. java etl 简单实例_东方通ETL开发实例

    东方通ETL开发实例 下面通过一个简单的"Oracle CDC增量抽取"实例,带大家感受一下TIETL的 开发思路和强大的数据处理能力. 功能需求: 同一数据库(localhost ...

  3. java 简单万年历,java万年历简单实例

    本文实例讲述了JAVA实现的简单万年历. 实现思路具体如下: 已知1900年1月1日星期一判断是否闰年 指定年月返回当月的天数 返回一年的总天数 返回距离1900年1月到指定年月的上一个月的总天数 实 ...

  4. 从零开始学习 webservice第一集,java webservice简单实例入门教程

    现在从零开始学习webservice 概念自己百度搜,总之,webservice就相当于一个接口,就像你走进了一家售货店,你不需要知道这家店怎么卖给你东西,你拿着钱去,说我要一包玉溪,人家就会给你返回 ...

  5. Java异常处理简单实例

    Java异常处理 异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的. 比如说,你的代码少了一个分号,那么运行出来结果是提示是错误 java.lang.Error:如果你用 ...

  6. java注解简单实例

    1.创建一个注解 package com.anno;import java.lang.annotation.ElementType; import java.lang.annotation.Reten ...

  7. java ajax简单实例_JAVA编写的AJAX例子,很简单,但是很容易理解详解

    非原创,但是从哪来的我也忘了,呵呵! window.onload = function() { CreateDateSelect(); } var xmlHttp = false; var e; // ...

  8. java pjax_pjax简单实例

    ajax缺点是破坏了浏览器的前进后退,因为ajax的请求不会留在历史记录中.pjax就不一样了,pjax被解释成ajax+pushState的封装,因为它把ajax的请求写入历史记录,并反映在地址栏, ...

  9. webservice实例java_Java WebService(实战) 简单实例

    一.准备工作(以下为本实例使用工具) 1.MyEclipse10.7.1 2.JDK 1.6.0_22 二.创建服务端 1.创建[Web Service Project],命名为[TheService ...

最新文章

  1. python 中的for i in range()的使用(for _ in range())
  2. magento app/design/adminhtml/default/default/template/sales/order/view/info.phtml XSS Vul
  3. 事件冒泡及阻止事件冒泡 事件的触发 事件参数对象 获取用户按下键盘的键
  4. html元素data属性设置变量,HTML5 自定义属性 data-* 和 jQuery.data 详解
  5. 网络安全逐渐成为程序员的必备技能
  6. 保存 laravel model 而不更新 timestamps 的方法
  7. dw上的php代码如何预览在浏览器_13个面向开发人员的JavaScript代码编辑器和IDE
  8. 智伴机器人广西团队_畅想科技 智绘未来——2020年全区乡村学校少年宫科技体验日活动在广西科技馆举办...
  9. 用 theano 求解 Logistic Regression (SGD 优化算法)
  10. ln命令:软链接建立与删除
  11. Flask 框架 是 Python 中最流行的 Web 框架之一
  12. php项目升级包制作,PHP项目安全:PHP的安装与升级
  13. 如何优化Flash动画使文件更小播放更流畅
  14. Profinet Commander下载方法
  15. autojs版本的QQ聊天自动回复机器人源码免费分享,不需要root权限
  16. lintcode刷题——罗马数字转整数
  17. 用c语言函数判断是否为水仙花数,输入三位数,判断是不是水仙花数c语言c语言...
  18. 经典点云配准算法:迭代最近点算法ICP(Iterative Closest Point)
  19. 手机游戏怎么独占世界手游鳌头
  20. 当你写爬虫遇到APP的请求有加密参数时该怎么办?【初级篇-秒杀模式】

热门文章

  1. 使用myeclipse打开警示牌文件出现“Failed to create the part's controls错误
  2. html邮件 图片加载很慢,[转载]Outlook打开邮件速度很慢的解决办法
  3. 智慧安监方案:AI及视频技术在企业安全生产中的风险预警作用
  4. 汇编汇编(MASM debug命令)
  5. 淘淘商城系列(一)—— 系统架构(三)
  6. 地铁隧道维修检测三维扫描_隧道维修3D扫描_隧道3D激光扫描建模
  7. 京东AI走过双十一:在技术时代建立信赖样本
  8. vscode 中.html无Vue语法提示
  9. 百度地图API后台持续定位、指南针改变位置问题
  10. 设置mac vim彩色