基于resteasy版本:2.2.1.GA
第一波让我们一窥resteasy的真面目,本波就基于第一波中得例子来阐述下用不同的方式让resteasy发布我们的服务(要知其然还要知其所以然才能运用自如)
1.使用的 ServletContextListener 来初始化并发布我们的服务类
- <span style="color:#000000;"> <!DOCTYPE web-app PUBLIC
- "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
- "http://java.sun.com/dtd/web-app_2_3.dtd" >
- <web-app>
- <context-param>
- <param-name>resteasy.resources</param-name>
- <param-value>resteasy.server.Echo</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>
- </servlet>
- <servlet-mapping>
- <servlet-name>Resteasy</servlet-name> <url-pattern>/*</url-pattern>
- </servlet-mapping>
- </web-app></span>
这是第一波中得web.xml,也就是用的listener来进行的服务发布:
查看源代码可以发现public class ResteasyBootstrap implements ServletContextListener,其实现了ServletContextListener 接口,通过获取
- <context-param>
- <param-name>resteasy.resources</param-name>
- <param-value>resteasy.server.Echo</param-value>
- </context-param>
如上参数进行了服务类的加载.
- resteasy.resources
代表通过指定资源类的全路径名进行加载,有多个资源类可通过逗号分开
查看官方文档可以发现其他用于加载资源类的参数
resteasy.scan.resources 默认值:false 用途:设置为ture时,将自动搜索 WEB-INF/lib下面的 jars 和 WEB-INF/classes目录中有(@GET @POST ...)注解的class并注册为服务 |
可用上一波的例子替换相应参数进行测试(亲测木有问题)
2.使用 servlet Filter 注册服务类
web.xml如下
如上代码,我们发现相比前面例子去掉了listener,在servlet中多添加了一个
这是一个抽象类,是一个jax rs的标准规范,允许通过其子类注册你得资源类
请看MyApplication代码
通过构造函数添加了一个Echo的资源类实例,当然也可通过添加一个class来实现,二者选其一即可
web.xml如下
- <!DOCTYPE web-app PUBLIC
- "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
- "http://java.sun.com/dtd/web-app_2_3.dtd" >
- <web-app>
- <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>resteasy.server.MyApplication</param-value>
- </init-param>
- </servlet>
- <servlet-mapping>
- <servlet-name>Resteasy</servlet-name>
- <url-pattern>/*</url-pattern>
- </servlet-mapping>
- </web-app>
如上代码,我们发现相比前面例子去掉了listener,在servlet中多添加了一个
- javax.ws.rs.Application
请看MyApplication代码
- package resteasy.server;
- import java.util.HashSet;
- import java.util.Set;
- import javax.ws.rs.core.Application;
- public class MyApplication extends Application{
- Set<Object> objectSet = new HashSet<Object>();
- Set<Class<?>> classSet = new HashSet<Class<?>>();
- public MyApplication()
- {
- objectSet.add(new Echo());
- // classSet.add(Echo.class);
- }
- @Override
- public Set<Class<?>> getClasses() {
- // TODO Auto-generated method stub
- return classSet;
- }
- @Override
- public Set<Object> getSingletons() {
- // TODO Auto-generated method stub
- return objectSet;
- }
- }
作为servlet进行资源的注册,你会发现不能将静态文件(html,images)注册为资源,所以resteasy还提供了filter进行资源的注册,不妨碍其获取静态文件
继续引用上一个例子,只用修改其web.xml如下
- <!DOCTYPE web-app PUBLIC
- "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
- "http://java.sun.com/dtd/web-app_2_3.dtd" >
- <web-app>
- <filter>
- <filter-name>Resteasy</filter-name>
- <filter-class>
- org.jboss.resteasy.plugins.server.servlet.FilterDispatcher
- </filter-class>
- <init-param>
- <param-name>javax.ws.rs.Application</param-name>
- <param-value>resteasy.server.MyApplication</param-value>
- </init-param>
- </filter>
- <filter-mapping>
- <filter-name>Resteasy</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
- </web-app>
相关推荐
综合上述知识点,使用RESTEasy框架构建WebService的整个过程,从项目初始化、资源类的编写、服务类的实现、拦截器的使用、文件上传的处理、与Spring框架的集成,以及前端请求的编码问题解决等方面都提供了一个清晰的...
### Jersey和Tomcat构建RESTful WebService #### RESTful Web服务简介 REST(Representational State Transfer)是由HTTP规范1.0和1.1版的主要作者之一Roy Fielding在其2000年的博士论文中提出的。REST的核心思想...
Resteasy JAX-RS 3.0.6-all.zip 是一个包含了Resteasy框架的最新官方版本,该框架是基于Java的,主要用于实现JAX-RS(Java API for RESTful Web Services)规范。JAX-RS是一种标准接口,它定义了如何在Java应用程序...
在这个项目中,"restful-webService" 提供了一个框架,用于构建RESTful风格的服务,包括客户端和服务端两大部分。这个框架允许开发者专注于业务逻辑,而无需从零开始实现所有基础结构。 1. **RESTful原则**: REST...
JBoss RESTEasy 是一个用来使用Java语言开发 RESTFul Web服务的框架。RESTEasy 项目是 JAX-RS 的一个实现,集成的一些亮点: * 不需要配置文件,只要把JARs文件放到类路径里面,添加 @Path 注解就可以了。 * 完全...
在IT行业中,RESTful WebService框架是开发网络应用的重要工具,Jersey作为Java平台上的一个开源框架,专门用于实现RESTful服务。本文将深入探讨如何巧妙利用Jersey框架解决文件上传时可能出现的乱码问题,同时也会...
在IT行业中,RESTful Web服务已经成为构建分布式系统和应用程序接口(API)的主流方式。它基于Representational State Transfer(表述性状态转移)架构原则,提供了一种轻量级、无状态、可缓存的交互模式。本文将...
restful 基于resteasy实现的restful webservice。和spring mvc结合起来使用。部署在tomcat和jboss中都可以。jboss中包含了部分restful的基础jar。
在本文中,我们将深入探讨七种实现WebService的方法,这些方法涵盖了从基本的JDK实现到利用高级框架如CXF和Spring的解决方案。 1. **JDK SOAP实现**:基于Java API for XML Processing (JAXP) 和SOAP with ...
3. **配置服务器**:配置服务器以支持JAX-RS服务,例如使用Jersey或RestEasy框架。 4. **编写客户端代码**:利用JAX-RS 2.0提供的客户端API来调用RESTful服务。 #### 六、案例分析 假设我们需要构建一个简单的...
RESTface作为一个Web服务框架,旨在简化RESTful服务的创建,使开发者能够更高效地构建可交互的、分布式的系统。 **RESTful架构原则** 1. **客户端-服务器架构**:客户端和服务器之间通过明确的接口进行通信,双方...
在这个“rest webservice demo”中,我们将会探讨如何使用Java来快速实现一个RESTful Web服务。 Java中实现REST服务最常用的框架是JAX-RS,它提供了一套标准API,使得开发者可以方便地创建RESTful接口。JAX-RS的...
1. **选择合适的框架**:Java提供了多种用于开发RESTful Web服务的框架,包括Spring Boot、Jersey和RestEasy等。Spring Boot因其强大的生态系统和简化配置的功能而受到广泛欢迎;Jersey则是Java EE 7标准的一部分,...
Web服务(WebService)是一种基于互联网的、平台独立的交互方式,允许不同的应用程序之间进行通信和数据交换。在本文中,我们将深入探讨Web服务的核心概念、技术栈、应用场景以及如何使用工具来开发和测试Web服务。 ...
CXF是一个流行的Java Web服务框架,支持JAX-WS和JAX-RS(用于构建RESTful Web服务的API)。CXF不仅提供服务生成和消费,还有丰富的扩展功能,如安全、数据绑定等。 4. **JAX-RS (Java API for RESTful Web ...
总结,本例"webservice例子JAVA写"旨在教授如何使用Java构建和使用Web服务,涵盖了SOAP和REST两种常见的Web服务实现方式,以及客户端调用的实现。通过学习和实践,你将能够创建自己的分布式系统,实现不同应用程序间...
本文档主要探讨了软件开发中的Web服务实现,特别是Restful WebService的不同框架之间的性能比较。文档详细描述了一个测试案例,该案例用于评估Apache CXF、Jersey、RESTEasy和Restlet这四个不同框架在处理RESTful...
标题 "JDK Webservice" 指的是使用Java Development Kit (JDK) 来开发Web服务。Web服务是一种通过互联网交换结构化信息的方式,它允许不同的应用程序之间进行通信。在Java中,JDK提供了标准的API,如Java API for ...
【标题】"canjava源码-Webservice-Java-source-code" 涉及的主要知识点是Web服务(Webservice)的实现,使用Java编程语言。Web服务是一种基于互联网的、能够进行交互的数据交换标准,它允许应用程序之间进行通信,...
在云门户的开发中,使用了RESTEasy,这是一个JAX-RS(Java API for RESTful Web Services)的实现,它允许开发者轻松地在Java EE应用中构建RESTful服务。RESTEasy与Spring框架结合,可以方便地进行依赖注入,提高...