`

tomcat7上部署RESTeasy[helloworld]

 
阅读更多

之前在项目上使用过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 demo

    【RESTEasy HelloWorld 示例详解】 RESTEasy 是一个开源的 Java 框架,它实现了 JAX-RS(Java API for RESTful Web Services)规范,使得开发者能够轻松地在 Java 应用程序中创建 RESTful 服务。JAX-RS 是一种用于...

    Spring整合RestEasy示例工程源码

    - **配置RestEasy**:在`web.xml`中配置RestEasy的Servlet,并指定Spring应用上下文。 - **创建REST服务**:定义REST接口和实现,使用RestEasy的注解如`@Path`、`@GET`、`@POST`等。 - **注册服务**:在Spring配置中...

    resteasy使用netty

    RestEasy与Netty结合使用,可以构建高性能的RESTful服务,摆脱传统的Servlet容器如Tomcat的依赖。RestEasy是JBoss公司开发的一个Java框架,它实现了JSR 311和JSR 339(Java API for RESTful Web Services)标准,...

    RestEasyHelloWorld:RestEasy Hello世界示例

    **RestEasyHelloWorld: RestEasy Hello世界示例** 在Java开发中,RESTful Web服务已经成为构建可伸缩、模块化应用程序的首选方式。RESTEasy是一个流行的JAX-RS(Java API for RESTful Web Services)实现,它使得...

    resteasy手册

    resteasy

    使用RESTEasy构建WebService简介

    1. 快速构建HelloWorld示例,这是初学者学习RESTEasy的起点。 2. 使用不同方式发布RESTful Web服务,例如使用servletFilter注册服务类。 3. 实现非表单提交的文件上传功能。 4. 将RESTEasy与Spring集成,以提高服务...

    resteasy实例demo

    8. **部署与测试**:RestEasy服务通常部署在Java EE容器中,如Tomcat或WildFly。部署完成后,可以通过浏览器或curl命令测试服务。例如,访问`http://localhost:8080/your-app/hello/{name}`,可以看到与`@Path("/...

    restEasy 学习总结,附带源码

    而 Servlet 3.0 引入了注解驱动的部署,允许开发者直接在类或方法上使用 `@WebServlet` 和 `@Path` 注解,简化了 REST 服务的部署过程。RESTEasy 可以利用这种特性自动扫描并注册 REST 资源类,减少了配置文件的依赖...

    RESTEasy实现上传下载文件

    在本文中,我们将深入探讨如何使用RESTEasy和Guice框架实现文件的上传与下载功能。RESTEasy是一个基于Java的RESTful Web服务实现,它与Java EE应用服务器集成,而Guice是Google提供的一款轻量级依赖注入框架,帮助...

    resteasy参考文档及jar包

    RESTEasy集成了多种Java EE应用服务器,如Tomcat、Jetty以及WildFly等,为开发者提供了一套全面的工具和服务,包括客户端支持、拦截器、转换器、过滤器以及对JAX-RS标准的广泛支持。 RESTEasy的核心特性包括: 1. ...

    jaxrs-swagger:带有 RestEasy 的 Swagger 2.0 Hello World 示例

    jaxrs-招摇带有 RestEasy 的 Swagger 2.0 Hello World 示例。 它使用 swagger-core 1.5.0-M2 版本。 由于 1.5.0 尚未发布,因此您需要自行构建 swagger 核心并将其安装在本地 Maven 存储库中。构建 swagger-core git...

    restEasy3.0.18+jboss7案例

    案例基于 jboss 7.1.0 和restEasy3.0.18,是目前...因为使用的是jboss7,所以restEasy已经集成在里面了,直接用就行,甚至不用配置web.xml和一些自动扫描的参数,配置的重点是在自定义的applicaiton和自己的service中。

    resteasy jar包

    6. **集成性**:Resteasy能够轻松地与各种Java EE应用服务器集成,如Tomcat、Jetty、GlassFish和JBoss AS,这使得在不同环境下部署REST服务变得简单。 7. **错误处理**:通过`@Provider`和`@ExceptionMapper`注解,...

    RESTEasy 简单实例

    例如,在 JBoss 或 Tomcat 中,我们可以创建一个 `web.xml` 文件来启动 RESTEasy 框架: ```xml ... &lt;param-name&gt;resteasy.servlet.mapping.prefix &lt;param-value&gt;/rest &lt;listener-class&gt;org.jboss....

    RestEasy简介

    7. **客户端API**: RestEasy提供了一个客户端API,使得开发者可以像调用本地方法一样调用远程REST服务。 ### 开发流程 1. **定义资源类**: 创建一个Java类,使用`@Path`注解声明资源路径,然后在方法上使用`@GET`...

    resteasy 需要jar包

    Resteasy 是一个开源的 JAX-RS 实现,它允许开发者构建 RESTful Web 服务,并在 Java 应用程序中轻松地使用这些服务。JAX-RS(Java API for RESTful Web Services)是 Java 中的一个标准,用于创建基于 HTTP 的 REST...

    Netty-Resteasy-Spring

    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...

    resteasy开发手册

    接着,它详细描述了在JBoss AS7、EAP和Wildfly中配置RESTEasy模块的过程,包括在Servlet 3.0容器和较旧的Servlet容器中进行独立配置。 手册还涵盖了使用RESTEasy时常见的注解和配置项。例如,如何使用@Path注解来...

Global site tag (gtag.js) - Google Analytics