Resteasy是Jboss的开源项目,遵守 ASL 2.0 协议。RESTEasy的开发者是Bill Burke。
Resteasy同样是为构建SOAP应用,但是更加优秀,个人觉得是因为它的注解,它的Restful风格。
本文以 Resteasy 3.0.7为例
二,安装与配置
可直接上官网下载,另Resteasy是Jboss的项目,所以在JBoss AS ,JBoss EAP ,Wildfly中是捆绑的,只需做简单配置就可以使用。(JBoss AS ,JBoss EAP ,Wildfly,3者区别见注1)
2.1.JBoss AS ,JBoss EAP ,Wildfly 中配置Resteasy
a.一个空的 web.xml,做如下更改
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> </web-app>
b.创建Application
import javax.ws.rs.ApplicationPath; import javax.ws.rs.core.Application; @ApplicationPath("/root-path") public class MyApplication extends Application { }
注:如果你返空集或者单例对象,你的项目将会扫描jax - rs注释。
c.在根目录(web-inf)下创建jboss-deployment-structure.xml
<jboss-deployment-structure> <deployment> <dependencies> <module name="org.jboss.resteasy.resteasy-yaml-provider" services="import"/> </dependencies> </deployment> </jboss-deployment-structure>
注:关于module的其他配置见官网,比如org.jboss.resteasy.resteasy-jaxrs ,org.jboss.resteasy.resteasy-jaxb-provider 等。
以上部分未测试,从官网提供的文档中得出,见谅。 下文主要配置其他servelt 容器。
2.2.Resteasy在其他servlet 容器中的配置
a.下载jar.下载Resteasy,解压在lib下面看到需要的jar,本文以Maven为例
<dependency> <groupId>org.jboss.resteasy</groupId> <artifactId>resteasy-servlet-initializer</artifactId> <version>3.0.7.Final</version> </dependency>
注:该配置在Servlet 3.0以上有效,低版本的配置见官网。
b. 准备一个服务类,该类提供Api服务,例如:
@Path(value="/test") public class InitServlet { @GET @Path(value="/hello") public String create(@QueryParam("a") String query){ System.out.println("Hello Word!"); System.out.println(query); return "hello"; } }
注:@Path @GET @QueryParam 的配置以后说明
c.配置web.xml
c.1 配置servlet
<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>
c.1.1 如果使用 javax.ws.rs.Application参数 应准备一个Application,例如:
public class InitApplication extends Application { private Set<Object> singletons = new HashSet<Object>(); private Set<Class<?>> classes = new HashSet<Class<?>>(); public InitApplication() { // classes.add(UserServlet.class); singletons.add(new InitServlet()); } @Override public Set<Class<?>> getClasses() { return classes; } @Override public Set<Object> getSingletons() { return singletons; } }
注: 在初始时,将singletons.add(new InitServlet()); 将服务api加入容器启动。
c.1.2 如果使用 javax.ws.rs.Application参数, servlet应加上启动参数
<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>a.b.c.InitApplication</param-value> </init-param> </servlet>
注:a.b.c.InitApplication是你自己的java类,extends javax.ws.rs.core.Application,多个core哈,上文有它的代码
c.2 配置listener
<listener> <listener-class> org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap </listener-class> </listener>
注:请将它放在YOUR LISTENERS 之前
到目前为止,在其他servlet 容器中具体配置已经完成,将项目加了Tomcat或者jetty等,启动,输入http://localhost:8080/你的项目名/test/hello,将会出现hello,配置成功。
三,在其他servlet 容器中具体配置可以更改为以下几种
1.以servlet Filter的方式
filter-class 为org.jboss.resteasy.plugins.server.servlet.FilterDispatcher
同时也不需要listener了
<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>a.b.c.InitApplication</param-value> </init-param> </filter> <filter-mapping> <filter-name>Resteasy</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
2.不使用果使用 javax.ws.rs.Application
以resteasy.resources为web.xml的启动参数,以服务api类为值,直接启动服务,同样可访问。
<context-param> <param-name>resteasy.resources</param-name> <param-value>a.b.c.InitServlet</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>
另,如果url-pattern不止/*,如
<servlet-mapping> <servlet-name>Resteasy</servlet-name> <url-pattern>/restful-services/*</url-pattern> </servlet-mapping>
那么请在web.xml中加上启动项
<context-param> <param-name>resteasy.servlet.mapping.prefix</param-name> <param-value>/restful-services</param-value> </context-param>
注1.JBoss AS ,JBoss EAP ,Wildfly,3者区别http://jblzdg.iteye.com/blog/2087331
注2.文章信息主要来源于官网