之前在项目上使用过Jersey实现的JAXRS RESTful Webservice部分交互功能,容器是tomcat;看到RESTful还有另一种实现resteasy,不过resteasy和jboss容器紧密结合,但它同时也支持jdk5以上的tomcat环境。
一,工具
tomcat7.0.68,
resteasy-jaxrs-3.0.17.Final,
EclipseJEE(Mars2)
二,RESTeasy服务端配置
参考官方的userguide文档,配置web.xml配置、实现javax.ws.rs.core.Application、实现资源类(merrick.resteasy.):
1,配置web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>rest1</display-name> <context-param> <param-name>resteasy.logger.type</param-name> <param-value>LOG4J</param-value> </context-param> <context-param> <param-name>resteasy.resources</param-name> <param-value>merrick.resteasy.ServeResource</param-value> </context-param> <context-param> <param-name>resteasy.servlet.mapping.prefix</param-name> <param-value>/resteasy</param-value> </context-param> <listener> <listener-class> org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap </listener-class> </listener> <servlet> <servlet-name>Resteasy</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>merrick.resteasy.TestAPPApplication</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>Resteasy</servlet-name> <url-pattern>/resteasy/*</url-pattern> </servlet-mapping> </web-app>
2,实现简单的资源服务类:
package merrick.resteasy; import java.util.Date; import javax.servlet.http.HttpServletRequest; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; import org.apache.log4j.Logger; @Path("/rootclasspath") public class ServeResource { @Context HttpServletRequest rq ; public static Logger log = Logger.getLogger(ServeResource.class); @GET @Path("/m1") @Produces(MediaType.TEXT_HTML) public String getstring1(){ log.info("Get Request, " + new Date().toString()); return "hello1"; } @GET @Path("/m2/{param1}") @Produces(MediaType.TEXT_HTML) public String getstring2(@PathParam("param1") String p1 ){ log.info("REQ URL: "+ rq.getRequestURL()); log.info("Get Request: " + new Date().toString()); log.info( p1); return "hello2"; } }
3,按照文档继承了Application
package merrick.resteasy; import java.util.HashSet; import java.util.Set; import javax.ws.rs.core.Application; public class TestAPPApplication extends Application { Set<Object> objectSet = new HashSet<Object>(); Set<Class<?>> classSet = new HashSet<Class<?>>(); public TestAPPApplication() { objectSet.add(new ServeResource()); } @Override public Set<Class<?>> getClasses() { return classSet; } @Override public Set<Object> getSingletons() { return objectSet; } }
三,tomcat7上调试运行
因为环境限制没有使用Maven,web项目中把resteasy-jaxrs-3.0.17.Final/lib里的所有jar包都引进了,于是带来了一堆问题,有两个问题网上搜了半天没答案,大约所有包都加载进来了一定有不需要的而导致问题的,尝试了几次,解决如下:
问题日志: 找不到类org/hibernate/validator/method/MethodValidator 解决方法: 删除所有有关hibernate或validator的jar引用
另一个问题: 404问题,没有其他错误日志 解决方法: 继承Application类
四,使用http客户端程序测试:
主要代码:
CloseableHttpClient c = HttpClients.createDefault(); String url1 = "http://localhost:8080/resteasyservertest1/resteasy/rootclasspath/m1"; HttpGet g = new HttpGet(url1); RequestConfig defaultRequestConfig = RequestConfig.custom() .setSocketTimeout(5000) .setConnectTimeout(5000) .setConnectionRequestTimeout(5000) //超时时间必须要设,不然客户端会无限等待 .setStaleConnectionCheckEnabled(true) .build(); g.setConfig(defaultRequestConfig); CloseableHttpResponse r = c.execute(g); System.out.println("Response: "+EntityUtils.toString(r.getEntity())); System.out.println("Code: " + r.getStatusLine().getStatusCode()); r.close(); c.close();
运行结果:
服务端
[RestServ] INFO [http-bio-8080-exec-13] merrick.resteasy.ServeResource.getstring2(32) | REQ URL: http://localhost:8080/resteasyservertest1/resteasy/rootclasspath/m2/x1 [RestServ] INFO [http-bio-8080-exec-13] merrick.resteasy.ServeResource.getstring2(33) | Get Request: Sun Oct 09 15:59:48 CST 2016 [RestServ] INFO [http-bio-8080-exec-13] merrick.resteasy.ServeResource.getstring2(34) | x1
客户端
Response: hello2 Code: 200
相关推荐
【RESTEasy HelloWorld 示例详解】 RESTEasy 是一个开源的 Java 框架,它实现了 JAX-RS(Java API for RESTful Web Services)规范,使得开发者能够轻松地在 Java 应用程序中创建 RESTful 服务。JAX-RS 是一种用于...
- **配置RestEasy**:在`web.xml`中配置RestEasy的Servlet,并指定Spring应用上下文。 - **创建REST服务**:定义REST接口和实现,使用RestEasy的注解如`@Path`、`@GET`、`@POST`等。 - **注册服务**:在Spring配置中...
RestEasy与Netty结合使用,可以构建高性能的RESTful服务,摆脱传统的Servlet容器如Tomcat的依赖。RestEasy是JBoss公司开发的一个Java框架,它实现了JSR 311和JSR 339(Java API for RESTful Web Services)标准,...
**RestEasyHelloWorld: RestEasy Hello世界示例** 在Java开发中,RESTful Web服务已经成为构建可伸缩、模块化应用程序的首选方式。RESTEasy是一个流行的JAX-RS(Java API for RESTful Web Services)实现,它使得...
resteasy
1. 快速构建HelloWorld示例,这是初学者学习RESTEasy的起点。 2. 使用不同方式发布RESTful Web服务,例如使用servletFilter注册服务类。 3. 实现非表单提交的文件上传功能。 4. 将RESTEasy与Spring集成,以提高服务...
8. **部署与测试**:RestEasy服务通常部署在Java EE容器中,如Tomcat或WildFly。部署完成后,可以通过浏览器或curl命令测试服务。例如,访问`http://localhost:8080/your-app/hello/{name}`,可以看到与`@Path("/...
而 Servlet 3.0 引入了注解驱动的部署,允许开发者直接在类或方法上使用 `@WebServlet` 和 `@Path` 注解,简化了 REST 服务的部署过程。RESTEasy 可以利用这种特性自动扫描并注册 REST 资源类,减少了配置文件的依赖...
在本文中,我们将深入探讨如何使用RESTEasy和Guice框架实现文件的上传与下载功能。RESTEasy是一个基于Java的RESTful Web服务实现,它与Java EE应用服务器集成,而Guice是Google提供的一款轻量级依赖注入框架,帮助...
RESTEasy集成了多种Java EE应用服务器,如Tomcat、Jetty以及WildFly等,为开发者提供了一套全面的工具和服务,包括客户端支持、拦截器、转换器、过滤器以及对JAX-RS标准的广泛支持。 RESTEasy的核心特性包括: 1. ...
jaxrs-招摇带有 RestEasy 的 Swagger 2.0 Hello World 示例。 它使用 swagger-core 1.5.0-M2 版本。 由于 1.5.0 尚未发布,因此您需要自行构建 swagger 核心并将其安装在本地 Maven 存储库中。构建 swagger-core git...
案例基于 jboss 7.1.0 和restEasy3.0.18,是目前...因为使用的是jboss7,所以restEasy已经集成在里面了,直接用就行,甚至不用配置web.xml和一些自动扫描的参数,配置的重点是在自定义的applicaiton和自己的service中。
6. **集成性**:Resteasy能够轻松地与各种Java EE应用服务器集成,如Tomcat、Jetty、GlassFish和JBoss AS,这使得在不同环境下部署REST服务变得简单。 7. **错误处理**:通过`@Provider`和`@ExceptionMapper`注解,...
例如,在 JBoss 或 Tomcat 中,我们可以创建一个 `web.xml` 文件来启动 RESTEasy 框架: ```xml ... <param-name>resteasy.servlet.mapping.prefix <param-value>/rest <listener-class>org.jboss....
7. **客户端API**: RestEasy提供了一个客户端API,使得开发者可以像调用本地方法一样调用远程REST服务。 ### 开发流程 1. **定义资源类**: 创建一个Java类,使用`@Path`注解声明资源路径,然后在方法上使用`@GET`...
Resteasy 是一个开源的 JAX-RS 实现,它允许开发者构建 RESTful Web 服务,并在 Java 应用程序中轻松地使用这些服务。JAX-RS(Java API for RESTful Web Services)是 Java 中的一个标准,用于创建基于 HTTP 的 REST...
Test http://localhost:8082/resteasy/hello/world 教程 jax-rs规范用法: http://www.vogella.com/tutorials/REST/article.html resteasy 教程: http://code.freedomho.com/9541.html 名次解释 RESTEasy:RESTEasy...
接着,它详细描述了在JBoss AS7、EAP和Wildfly中配置RESTEasy模块的过程,包括在Servlet 3.0容器和较旧的Servlet容器中进行独立配置。 手册还涵盖了使用RESTEasy时常见的注解和配置项。例如,如何使用@Path注解来...