这篇文章介绍一下怎么通过CXF来发布RESTful的Web Service.

创新互联服务项目包括堆龙德庆网站建设、堆龙德庆网站制作、堆龙德庆网页制作以及堆龙德庆网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,堆龙德庆网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到堆龙德庆省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
1. 首先是实体类,注意其中的@XmlRootElement注解
- package com.googlecode.garbagecan.cxfstudy.jaxrs;
 - import java.util.Date;
 - import javax.xml.bind.annotation.XmlRootElement;
 - @XmlRootElement(name="Customer")
 - public class Customer {
 - private String id;
 - private String name;
 - private Date birthday;
 - public String getId() {
 - return id;
 - }
 - public void setId(String id) {
 - this.id = id;
 - }
 - public String getName() {
 - return name;
 - }
 - public void setName(String name) {
 - this.name = name;
 - }
 - public Date getBirthday() {
 - return birthday;
 - }
 - public void setBirthday(Date birthday) {
 - this.birthday = birthday;
 - }
 - @Override
 - public String toString() {
 - return org.apache.commons.lang.builder.ToStringBuilder.reflectionToString(this);
 - }
 - }
 
2. RESTful Web Service接口类,可以通过修改@Produces注解来声明暴露接口返回的json还是xml数据格式
- package com.googlecode.garbagecan.cxfstudy.jaxrs;
 - import javax.ws.rs.GET;
 - import javax.ws.rs.Path;
 - import javax.ws.rs.PathParam;
 - import javax.ws.rs.Produces;
 - import javax.ws.rs.QueryParam;
 - @Path(value = "/customer")
 - @Produces("*/*")
 - //@Produces("application/xml")
 - //@Produces("application/json")
 - public interface CustomerService {
 - @GET
 - @Path(value = "/{id}/info")
 - Customer findCustomerById(@PathParam("id")String id);
 - @GET
 - @Path(value = "/search")
 - Customer findCustomerByName(@QueryParam("name")String name);
 - }
 
3. RESTful Web Service接口实现类
- package com.googlecode.garbagecan.cxfstudy.jaxrs;
 - import java.util.Calendar;
 - public class CustomerServiceImpl implements CustomerService {
 - public Customer findCustomerById(String id) {
 - Customer customer = new Customer();
 - customer.setId(id);
 - customer.setName(id);
 - customer.setBirthday(Calendar.getInstance().getTime());
 - return customer;
 - }
 - public Customer findCustomerByName(String name) {
 - Customer customer = new Customer();
 - customer.setId(name);
 - customer.setName(name);
 - customer.setBirthday(Calendar.getInstance().getTime());
 - return customer;
 - }
 - }
 
4. Server端代码
- package com.googlecode.garbagecan.cxfstudy.jaxrs;
 - import org.apache.cxf.interceptor.LoggingInInterceptor;
 - import org.apache.cxf.interceptor.LoggingOutInterceptor;
 - import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;
 - public class MyServer {
 - public static void main(String[] args) throws Exception {
 - JAXRSServerFactoryBean factoryBean = new JAXRSServerFactoryBean();
 - factoryBean.getInInterceptors().add(new LoggingInInterceptor());
 - factoryBean.getOutInterceptors().add(new LoggingOutInterceptor());
 - factoryBean.setResourceClasses(CustomerServiceImpl.class);
 - factoryBean.setAddress("http://localhost:9000/ws/jaxrs");
 - factoryBean.create();
 - }
 - }
 
5. Client端代码
- package com.googlecode.garbagecan.cxfstudy.jaxrs;
 - import org.apache.commons.httpclient.HttpClient;
 - import org.apache.commons.httpclient.HttpStatus;
 - import org.apache.commons.httpclient.methods.GetMethod;
 - public class MyClient {
 - public static void main(String[] args) throws Exception {
 - go("http://localhost:9000/ws/jaxrs/customer/1/info");
 - go("http://localhost:9000/ws/jaxrs/customer/search?name=abc");
 - }
 - private static void go(String url) throws Exception {
 - HttpClient client = new HttpClient();
 - GetMethod method = new GetMethod(url);
 - int statusCode = client.executeMethod(method);
 - if (statusCode != HttpStatus.SC_OK) {
 - System.err.println("Method failed: " + method.getStatusLine());
 - }
 - byte[] responseBody = method.getResponseBody();
 - System.out.println(new String(responseBody));
 - }
 - }
 
6.测试
首先运行MyServer类,然后运行MyClient类来验证Web Service。
                当前题目:Apache CXF实战之四:构建RESTful Web Service
                
                文章链接:http://www.csdahua.cn/qtweb/news0/164900.html
            
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网