Apache CXF Practice 3: Transfer Java objects

Source: Internet
Author: User

The previous two articles introduced how to build the most basic Web Service through CXF, And the exposed interface parameters and return values are strings. Let's take a look at a slightly more complex example.

1. A common pojo object is used to represent an object class.

 
 
  1. package com.googlecode.garbagecan.cxfstudy.jaxws;  
  2.  
  3. import java.util.Date;  
  4.  
  5. public class Customer {  
  6.     private String id;  
  7.     private String name;  
  8.     private Date birthday;  
  9.     public String getId() {  
  10.         return id;  
  11.     }  
  12.     public void setId(String id) {  
  13.         this.id = id;  
  14.     }  
  15.     public String getName() {  
  16.         return name;  
  17.     }  
  18.     public void setName(String name) {  
  19.         this.name = name;  
  20.     }  
  21.     public Date getBirthday() {  
  22.         return birthday;  
  23.     }  
  24.     public void setBirthday(Date birthday) {  
  25.         this.birthday = birthday;  
  26.     }  
  27.     @Override 
  28.     public String toString() {  
  29.         return org.apache.commons.lang.builder.ToStringBuilder.reflectionToString(this);  
  30.     }  

2. Create a Web Service Interface Class

 
 
  1. package com.googlecode.garbagecan.cxfstudy.jaxws;  
  2.  
  3. import javax.jws.WebMethod;  
  4. import javax.jws.WebParam;  
  5. import javax.jws.WebResult;  
  6. import javax.jws.WebService;  
  7.  
  8. @WebService 
  9. public interface CustomerService {  
  10.     @WebMethod 
  11.     @WebResult Customer findCustomer(@WebParam String id);  

3. Create a Web Service Interface implementation class

 
 
  1. package com.googlecode.garbagecan.cxfstudy.jaxws;  
  2.  
  3. import java.util.Calendar;  
  4.  
  5. public class CustomerServiceImpl implements CustomerService {  
  6.  
  7.     public Customer findCustomer(String id) {  
  8.         Customer customer = new Customer();  
  9.         customer.setId("customer_" + id);  
  10.         customer.setName("customer_name");  
  11.         customer.setBirthday(Calendar.getInstance().getTime());  
  12.         return customer;  
  13.     }  

4. The following is the Server code.

 
 
  1. package com.googlecode.garbagecan.cxfstudy.jaxws;  
  2.  
  3. import javax.xml.ws.Endpoint;  
  4.  
  5. import org.apache.cxf.interceptor.LoggingInInterceptor;  
  6. import org.apache.cxf.interceptor.LoggingOutInterceptor;  
  7. import org.apache.cxf.jaxws.JaxWsServerFactoryBean;  
  8.  
  9. public class MyServer {  
  10.       
  11.     private static final String address = "http://localhost:9000/ws/jaxws/customerService";  
  12.       
  13.     public static void main(String[] args) throws Exception {  
  14.         // http://localhost:9000/ws/jaxws/customerService?wsdl  
  15.         JaxWsServerFactoryBean factoryBean = new JaxWsServerFactoryBean();  
  16.         factoryBean.getInInterceptors().add(new LoggingInInterceptor());  
  17.         factoryBean.getOutInterceptors().add(new LoggingOutInterceptor());  
  18.  
  19.         factoryBean.setServiceClass(CustomerServiceImpl.class);  
  20.         factoryBean.setAddress(address);  
  21.         factoryBean.create();  
  22.     }  

5. The following is the Client code.

 
 
  1. package com.googlecode.garbagecan.cxfstudy.jaxws;  
  2.  
  3. import java.net.SocketTimeoutException;  
  4.  
  5. import javax.xml.ws.WebServiceException;  
  6.  
  7. import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;  
  8.  
  9. public class MyClient {  
  10.     public static void main(String[] args) throws Exception {  
  11.         JaxWsProxyFactoryBean factoryBean = new JaxWsProxyFactoryBean();  
  12.         factoryBean.setAddress("http://localhost:9000/ws/jaxws/customerService");  
  13.         factoryBean.setServiceClass(CustomerService.class);  
  14.         Object obj = factoryBean.create();  
  15.  
  16.         CustomerService customerService = (CustomerService) obj;  
  17.         try {  
  18.             Customer customer = customerService.findCustomer("123");  
  19.             System.out.println("Customer: " + customer);  
  20.         } catch(Exception e) {  
  21.             if (e instanceof WebServiceException   
  22.                     && e.getCause() instanceof SocketTimeoutException) {  
  23.                 System.err.println("This is timeout exception.");  
  24.             } else {  
  25.                 e.printStackTrace();  
  26.             }  
  27.         }  
  28.     }  
  29. }  

6. Test

First, run the MyServer class, and then run the MyClient class to verify the Web Service.

Series of articles]

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.