利用resteasy框架构建rest webservice----第二波:使用不同的方式让resteasy发布我们的restful webservice 服务(实例、教程)
2014-02-21 09:30
1011 查看
基于resteasy版本:2.2.1.GA
第一波让我们一窥resteasy的真面目,本波就基于第一波中得例子来阐述下用不同的方式让resteasy发布我们的服务(要知其然还要知其所以然才能运用自如)
1.使用的 ServletContextListener 来初始化并发布我们的服务类
[html]
view plaincopy
<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 接口,通过获取
[html]
view plaincopy
<context-param>
<param-name>resteasy.resources</param-name>
<param-value>resteasy.server.Echo</param-value>
</context-param>
如上参数进行了服务类的加载.
[html]
view plaincopy
resteasy.resources
代表通过指定资源类的全路径名进行加载,有多个资源类可通过逗号分开
查看官方文档可以发现其他用于加载资源类的参数
可用上一波的例子替换相应参数进行测试(亲测木有问题)
2.使用 servlet Filter 注册服务类
web.xml如下
[html]
view plaincopy
<!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中多添加了一个
[html]
view plaincopy
javax.ws.rs.Application
这是一个抽象类,是一个jax rs的标准规范,允许通过其子类注册你得资源类
请看MyApplication代码
[java]
view plaincopy
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;
}
}
通过构造函数添加了一个Echo的资源类实例,当然也可通过添加一个class来实现,二者选其一即可
3.使用 filter 注册服务类(也就是资源类)
作为servlet进行资源的注册,你会发现不能将静态文件(html,images)注册为资源,所以resteasy还提供了filter进行资源的注册,不妨碍其获取静态文件
继续引用上一个例子,只用修改其web.xml如下
[html]
view plaincopy
<!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的真面目,本波就基于第一波中得例子来阐述下用不同的方式让resteasy发布我们的服务(要知其然还要知其所以然才能运用自如)
1.使用的 ServletContextListener 来初始化并发布我们的服务类
[html]
view plaincopy
<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 接口,通过获取
[html]
view plaincopy
<context-param>
<param-name>resteasy.resources</param-name>
<param-value>resteasy.server.Echo</param-value>
</context-param>
如上参数进行了服务类的加载.
[html]
view plaincopy
resteasy.resources
代表通过指定资源类的全路径名进行加载,有多个资源类可通过逗号分开
查看官方文档可以发现其他用于加载资源类的参数
resteasy.scan.resources 默认值:false 用途:设置为ture时,将自动搜索 WEB-INF/lib下面的 jars 和 WEB-INF/classes目录中有(@GET @POST ...)注解的class并注册为服务 |
2.使用 servlet Filter 注册服务类
web.xml如下
[html]
view plaincopy
<!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中多添加了一个
[html]
view plaincopy
javax.ws.rs.Application
这是一个抽象类,是一个jax rs的标准规范,允许通过其子类注册你得资源类
请看MyApplication代码
[java]
view plaincopy
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;
}
}
通过构造函数添加了一个Echo的资源类实例,当然也可通过添加一个class来实现,二者选其一即可
3.使用 filter 注册服务类(也就是资源类)
作为servlet进行资源的注册,你会发现不能将静态文件(html,images)注册为资源,所以resteasy还提供了filter进行资源的注册,不妨碍其获取静态文件
继续引用上一个例子,只用修改其web.xml如下
[html]
view plaincopy
<!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框架构建rest webservice----第二波:使用不同的方式让resteasy发布我们的restful webservice 服务(实例、教程)
- 利用resteasy框架构建rest webservice----第四波:resteasy与spring真正集成发布我们的restful webservice 服务(实例、教程)
- 利用resteasy框架构建rest webservice----第四波:resteasy与spring真正集成发布我们的restful webservice 服务(实例、教程)
- 利用resteasy框架构建rest webservice----第三波:实现文件上传---非form提交方式(实例、教程)
- 利用resteasy框架构建rest webservice----第三波:实现文件上传---非form提交方式(实例、教程)
- 利用resteasy框架构建rest webservice----第一波:快速构建HelloWorld(实例、教程)
- 利用resteasy框架构建rest webservice----第一波:快速构建HelloWorld(实例、教程)
- 利用resteasy框架构建rest webservice----第一波:快速构建HelloWorld(实例、教程)
- 关于使用spring mvc或者resteasy构建restful服务的差别与比较
- 利用resteasy框架构建rest webservice----第六波:实现文件下载
- 使用spring mvc或者resteasy构建restful服务
- 利用resteasy框架构建rest webservice----第五波:java代码调用乱码解决方案
- 利用resteasy框架构建rest webservice----第五波:java代码调用乱码解决方案
- 使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【十】——使用CacheCow和ETag缓存资源
- 利用GAE+RestEasy搭建webservice--编码与发布 推荐
- 使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【六】——实现资源间的关联
- 使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【七】——实现资源的分页
- 使用ASP.NET WEB API构建基于REST风格的服务实战系列教程(一)——使用EF6构建数据库及模型
- 使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【八】——Web Api的安全性
- 使用CXF(JaxWsServerFactoryBean、ServerFactoryBean)编码的方式发布WebService服务