基于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 接口,通过获取
- 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进行资源的注册,不妨碍其获取静态文件
- <!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>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。