对于和jboss as7的集成不需要做任何工作,jboss默认集成了resteasy,只需要对业务pojo做一些jax-rs的注解标注即可。
对于非Jboss的Servlet容器
spring和resteasy集成,主要有三种方式,
-
运行于Servlet版本大于等于3.0
-
运行于Servlet版本小于3.0
-
将resteasy和spring mvc整合在一起
基本配置
构建POM 依赖
- <dependency>
- <groupId>org.jboss.resteasy</groupId>
- <artifactId>jaxrs-api</artifactId>
- <version>${project.dependency.jboss.resteasy}</version>
- </dependency>
- <dependency>
- <groupId>org.jboss.resteasy</groupId>
- <artifactId>resteasy-jaxrs</artifactId>
- <version>${project.dependency.jboss.resteasy}</version>
- </dependency>
- <!-- Resteasy 集成 Jackson2 工具包 方便JSON 转换。 -->
- <dependency>
- <groupId>org.jboss.resteasy</groupId>
- <artifactId>resteasy-jackson2-provider</artifactId>
- <version>${project.dependency.jboss.resteasy}</version>
- </dependency>
- <dependency>
- <groupId>org.jboss.resteasy</groupId>
- <artifactId>resteasy-jaxb-provider</artifactId>
- <version>${project.dependency.jboss.resteasy}</version>
- </dependency>
- <!-- Reasteasy 集成Spring g工具包-->
- <dependency>
- <groupId>org.jboss.resteasy</groupId>
- <artifactId>resteasy-spring</artifactId>
- <version>${project.dependency.jboss.resteasy}</version>
- </dependency>
Web.xml 配置
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath:spring-config.xml</param-value>
- </context-param>
运行于Servlet版本大于等于3.0
servlet 3支持的初始化器
如果servlet版本大于3.0,那么需要加入一个servlet的初始化器
- <dependency>
- <groupId>org.jboss.resteasy</groupId>
- <artifactId>resteasy-servlet-initializer</artifactId>
- <version>${project.dependency.jboss.resteasy}</version>
- </dependency>
web.xml文件的配置
添加2个监听器,要注意的是,原本Spring默认使用的Context Loader Listener, 就不用使用了,因为第二个监听器 已经完成了加载Spring的工作了。
- <!-- Start Resteasy -->
- <listener>
- <listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class>
- </listener>
- <!-- load Spring Context -->
- <listener>
- <listener-class>org.jboss.resteasy.plugins.spring.SpringContextLoaderListener</listener-class>
- </listener>
编写Pojo类
- @Path("/restUser")
- @Named
- public class RestUserService {
- @Inject
- private UserService userServiceImpl;
- @GET
- @Path("/list")
- @Produces(value = {MediaType.APPLICATION_JSON})
- public String list() {
- User user = userServiceImpl.get(4L);
- return JacksonUtils.get().toJson(user);
- }
- }
启动服务器,访问 http://ip:port/你的项目路径/restUser/list。即可得到相应的json数据啦
运行于Servlet版本小于3.0
当运行的容器Servlet的版本小于3.0 那么之前的Serlvet3的初始化器是不能正常工作的,需要去掉。
web.xml文件的配置
要指定前缀否则和spring mvc的url-pattern冲突
- <servlet>
- <servlet-name>resteasy</servlet-name>
- <servlet-class>
- org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher
- </servlet-class>
- <context-param>
- <param-name>resteasy.servlet.mapping.prefix</param-name>
- <param-value>/rs</param-value>
- </context-param>
- </servlet>
- <servlet-mapping>
- <servlet-name>resteasy</servlet-name>
- <url-pattern>/rs/*</url-pattern>
- </servlet-mapping>
启动服务器,访问 http://ip:port/你的项目路径/restUser/list。即可得到相应的json数据啦
整合SpringMVC
整合到SpringMVC 是不需要Serlvet 初始化器的。
Web.xml文件配置
整合到SpringMVC中去,只需要使用SpringMVC的Servlet即可。
- <servlet>
- <servlet-name>Spring</servlet-name>
- <servlet-class>org.springframework.web.servlet.DispatcherServlet;</servlet-class>
- </servlet>
- <servlet-mapping>
- <servlet-name>Spring</servlet-name>
- <url-pattern>/*</url-pattern>
- </servlet-mapping>
编写Pojo类
使用SpringMVC的Controller的类注解,就可以整合到SpringMVC中去啦!
- @Controller
- @Path(ContactsResource.CONTACTS_URL)
- public class ContactsResource
- {
- public static final String CONTACTS_URL = "/contacts";
- @Autowired
- ContactService service;
- @GET
- @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
- @Path("data")
- public Contacts getAll()
- {
- return service.getAll();
- }
- @PUT
- @POST
- @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
- @Path("data")
- public Response saveContact(@Context UriInfo uri, Contact contact)
- throws URISyntaxException
- {
- service.save(contact);
- URI newURI = UriBuilder.fromUri(uri.getPath()).path(contact.getLastName()).build();
- return Response.created(newURI).build();
- }
- @GET
- @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
- @Path("data/{lastName}")
- public Contact get(@PathParam("lastName") String lastName)
- {
- return service.getContact(lastName);
- }
- @POST
- @PUT
- @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
- @Produces(MediaType.TEXT_HTML)
- public ModelAndView saveContactForm(@Form Contact contact)
- throws URISyntaxException
- {
- service.save(contact);
- return viewAll();
- }
- @GET
- @Produces(MediaType.TEXT_HTML)
- public ModelAndView viewAll()
- {
- // forward to the "contacts" view, with a request attribute named
- // "contacts" that has all of the existing contacts
- return new ModelAndView("contacts", "contacts", service.getAll());
- }
- }