成都创新互联网站制作重庆分公司

ApacheCXF中如何传输Java对象

这篇文章将为大家详细讲解有关Apache CXF中如何传输Java对象,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

成都创新互联公司服务项目包括丹江口网站建设、丹江口网站制作、丹江口网页制作以及丹江口网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,丹江口网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到丹江口省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

怎样通过CXF来构建最基本的Web Service,并且其中暴露的接口参数和返回值都是字符串,下面来看看一个稍微复杂一点的例子。

1. 首先是一个普通的pojo对象,用来表示一个实体类

package com.googlecode.garbagecan.cxfstudy.jaxws;   import java.util.Date;   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. 创建Web Service接口类

package com.googlecode.garbagecan.cxfstudy.jaxws;   import javax.jws.WebMethod;  import javax.jws.WebParam;  import javax.jws.WebResult;  import javax.jws.WebService;   @WebService public interface CustomerService {      @WebMethod     @WebResult Customer findCustomer(@WebParam String id);  }

3. 创建Web Service接口的实现类

package com.googlecode.garbagecan.cxfstudy.jaxws;   import java.util.Calendar;   public class CustomerServiceImpl implements CustomerService {       public Customer findCustomer(String id) {          Customer customer = new Customer();          customer.setId("customer_" + id);          customer.setName("customer_name");          customer.setBirthday(Calendar.getInstance().getTime());          return customer;      }  }

4. 下面是Server端的代码

package com.googlecode.garbagecan.cxfstudy.jaxws;   import javax.xml.ws.Endpoint;   import org.apache.cxf.interceptor.LoggingInInterceptor;  import org.apache.cxf.interceptor.LoggingOutInterceptor;  import org.apache.cxf.jaxws.JaxWsServerFactoryBean;   public class MyServer {            private static final String address = "http://localhost:9000/ws/jaxws/customerService";            public static void main(String[] args) throws Exception {          // http://localhost:9000/ws/jaxws/customerService?wsdl          JaxWsServerFactoryBean factoryBean = new JaxWsServerFactoryBean();          factoryBean.getInInterceptors().add(new LoggingInInterceptor());          factoryBean.getOutInterceptors().add(new LoggingOutInterceptor());           factoryBean.setServiceClass(CustomerServiceImpl.class);          factoryBean.setAddress(address);          factoryBean.create();      }  }

5. 下面是Client端的代码

package com.googlecode.garbagecan.cxfstudy.jaxws;   import java.net.SocketTimeoutException;   import javax.xml.ws.WebServiceException;   import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;   public class MyClient {      public static void main(String[] args) throws Exception {          JaxWsProxyFactoryBean factoryBean = new JaxWsProxyFactoryBean();          factoryBean.setAddress("http://localhost:9000/ws/jaxws/customerService");          factoryBean.setServiceClass(CustomerService.class);          Object obj = factoryBean.create();           CustomerService customerService = (CustomerService) obj;          try {              Customer customer = customerService.findCustomer("123");              System.out.println("Customer: " + customer);          } catch(Exception e) {              if (e instanceof WebServiceException                       && e.getCause() instanceof SocketTimeoutException) {                  System.err.println("This is timeout exception.");              } else {                  e.printStackTrace();              }          }      }  }

6.测试

首先运行MyServer类,然后运行MyClient类来验证Web Service。

关于Apache CXF中如何传输Java对象就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。


当前文章:ApacheCXF中如何传输Java对象
分享地址:http://cxhlcq.com/article/jeijjh.html

其他资讯

在线咨询

微信咨询

电话咨询

028-86922220(工作日)

18980820575(7×24)

提交需求

返回顶部