|
Page Edited :
CXF20DOC :
JAX-RS (JSR-311)
JAX-RS (JSR-311) has been edited by Jervis Liu (Nov 08, 2007). Content:CXF has an initial implementation of JAX-RS (JSR-311): Java API for RESTfulWeb Services. JAX-RS provides a more standard way to build RESTful services in Java. Resource classA resource class is a Java Class annotated with JAX-RS annotations to represent a Web resource. A typical resource class in JAX-RS looks like below: package demo.jaxrs.server;import java.util.HashMap; import java.util.Map; import javax.ws.rs.HttpMethod; import javax.ws.rs.ProduceMime; import javax.ws.rs.UriParam; import javax.ws.rs.UriTemplate; import javax.ws.rs.core.HttpContext; import javax.ws.rs.core.Response; import javax.ws.rs.core.UriInfo; @UriTemplate("/customerservice/") public class CustomerService { public CustomerService() { } @HttpMethod("GET") @UriTemplate("/customers/{id}/") public Customer getCustomer(@UriParam("id") String id) { ...... } @HttpMethod("PUT") @UriTemplate("/customers/") public Response updateCustomer(Customer customer) { ...... } @HttpMethod("POST") @UriTemplate("/customers/") public Response addCustomer(Customer customer) { ...... } @HttpMethod("DELETE") @UriTemplate("/customers/{id}/") public Response deleteCustomer(@UriParam("id") String id) { ...... } } More information on how to use JAX-RS annotations to create a resource class can be found from JAX-RS spec Configuring the serviceYou can create a JAX-RS RESTful service by using JAXRSServerFactoryBean: JAXRSServerFactoryBean sf = new JAXRSServerFactoryBean(); sf.setResourceClasses(CustomerService.class); sf.setAddress("http://localhost:9000/"); sf.create(); A couple things to note:
Configuring the service in container with Spring configuration file.web.xml<?xml version="1.0" encoding="ISO-8859-1"?> <!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>contextConfigLocation</param-name> <param-value>WEB-INF/beans.xml</param-value> </context-param> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> <servlet> <servlet-name>CXFServlet</servlet-name> <display-name>CXF Servlet</display-name> <servlet-class> org.apache.cxf.transport.servlet.CXFServlet </servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>CXFServlet</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> </web-app> beans.xml<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxrs="http://cxf.apache.org/jaxrs" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd"> <import resource="classpath:META-INF/cxf/cxf.xml" /> <import resource="classpath:META-INF/cxf/cxf-extension-jaxrs-binding.xml" /> <import resource="classpath:META-INF/cxf/cxf-servlet.xml" /> <jaxrs:server id="customerService" address="/"> <jaxrs:serviceBeans> <bean class="demo.jaxrs.server.CustomerService" /> </jaxrs:serviceBeans> </jaxrs:server> </beans> |
Powered by
Atlassian Confluence
(Version: 2.2.9 Build:#527 Sep 07, 2006)
-
Bug/feature request
Unsubscribe or edit your notifications preferences
Unsubscribe or edit your notifications preferences
