Spring中使用WebService

Server端和Client端的Web工程截图:

Spring中使用WebService


Spring中使用WebService


Server代码:

[html] view plain copy  print?Spring中使用WebServiceSpring中使用WebService
  1. package com.wiseweb.bean;  
  2.   
  3. public class Order {  
  4.   
  5.     private int id ;  
  6.     private String name ;  
  7.     private double price ;  
  8.       
  9.     public Order() {  
  10.         super();  
  11.     }  
  12.       
  13.     public Order(int id, String name, double price) {  
  14.         super();  
  15.         this.id = id;  
  16.         this.name = name;  
  17.         this.price = price;  
  18.     }  
  19.   
  20.     public int getId() {  
  21.         return id;  
  22.     }  
  23.     public void setId(int id) {  
  24.         this.id = id;  
  25.     }  
  26.     public String getName() {  
  27.         return name;  
  28.     }  
  29.     public void setName(String name) {  
  30.         this.name = name;  
  31.     }  
  32.     public double getPrice() {  
  33.         return price;  
  34.     }  
  35.     public void setPrice(double price) {  
  36.         this.price = price;  
  37.     }  
  38.     @Override  
  39.     public String toString() {  
  40.         return "Order [id=" + id + "name=" + name + "price=" + price + "]";  
  41.     }  
  42.       
  43.       
  44. }  

[html] view plain copy  print?Spring中使用WebServiceSpring中使用WebService
  1. package com.wiseweb.ws;  
  2.   
  3. import javax.jws.WebMethod;  
  4. import javax.jws.WebService;  
  5.   
  6. import com.wiseweb.bean.Order;  
  7.   
  8. @WebService  
  9. public interface OrderProcess {  
  10.     @WebMethod  
  11.     Order getMessById(int id) ;  
  12. }  

[html] view plain copy  print?Spring中使用WebServiceSpring中使用WebService
  1. package com.wiseweb.ws;  
  2.   
  3. import com.wiseweb.bean.Order;  
  4.   
  5. public class OrderProcessImpl implements OrderProcess {  
  6.   
  7.       
  8.     public OrderProcessImpl() {  
  9.         System.out.println("OrderProcessImpl()");  
  10.     }  
  11.   
  12.     @Override  
  13.     public Order getMessById(int id) {  
  14.         System.out.println("server :" + id);  
  15.         return new Order(id,"飞机",100000);  
  16.     }  
  17.   
  18. }  

[html] view plain copy  print?Spring中使用WebServiceSpring中使用WebService
  1. package com.wiseweb.ws.interceptor;  
  2.   
  3. import javax.xml.namespace.QName;  
  4.   
  5. import org.apache.cxf.binding.soap.SoapMessage;  
  6. import org.apache.cxf.headers.Header;  
  7. import org.apache.cxf.interceptor.Fault;  
  8. import org.apache.cxf.phase.AbstractPhaseInterceptor;  
  9. import org.apache.cxf.phase.Phase;  
  10. import org.w3c.dom.Element;  
  11.   
  12. public class CheckUserInterceptor extends AbstractPhaseInterceptor<SoapMessage>{  
  13.   
  14.     public CheckUserInterceptor() {  
  15.         super(Phase.PRE_PROTOCOL);  
  16.         System.out.println("CheckUserInterceptor.CheckUserInterceptor()");  
  17.     }  
  18.   
  19.     @Override  
  20.     public void handleMessage(SoapMessage message) throws Fault {  
  21.         Header header = message.getHeader(new QName("wiseweb")) ;  
  22.         if(header != null) {  
  23.             Element element = (Element)header.getObject() ;  
  24.             String username = element.getElementsByTagName("username").item(0).getTextContent() ;  
  25.             String password = element.getElementsByTagName("password").item(0).getTextContent() ;  
  26.             if(username.equals("wuhaixu") && password.equals("123456")) {  
  27.                 System.out.println("用户名与密码正确,通过验证!");  
  28.                 return ;  
  29.             }else {  
  30.                 throw new Fault(new RuntimeException("请输入正确的用户名和密码!")) ;  
  31.             }  
  32.         }else {  
  33.             throw new Fault(new RuntimeException("请输入用户名和密码!")) ;  
  34.         }  
  35.     }  
  36.   
  37. }  

beans.xml

[html] view plain copy  print?Spring中使用WebServiceSpring中使用WebService
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.       xmlns:jaxws="http://cxf.apache.org/jaxws"  
  5.       xsi:schemaLocation="  
  6.     http://www.springframework.org/schema/beans  
  7.      http://www.springframework.org/schema/beans/spring-beans.xsd  
  8.      http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">  
  9.        
  10.       <import resource="classpath:META-INF/cxf/cxf.xml" />  
  11.       <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />  
  12.       <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />  
  13.         
  14.       <jaxws:endpoint  
  15.         id="orderProcess"  
  16.         implementor="com.wiseweb.ws.OrderProcessImpl"  
  17.         address="/orderprocess">  
  18.         <jaxws:inInterceptors>  
  19.             <bean class="com.wiseweb.ws.interceptor.CheckUserInterceptor">  
  20.             </bean>  
  21.         </jaxws:inInterceptors>  
  22.       </jaxws:endpoint>  
  23. </beans>  

Client:

[html] view plain copy  print?Spring中使用WebServiceSpring中使用WebService
  1. package com.wiseweb.ws.interceptor;  
  2.   
  3. import java.util.List;  
  4.   
  5. import javax.xml.namespace.QName;  
  6. import javax.xml.parsers.DocumentBuilder;  
  7. import javax.xml.parsers.DocumentBuilderFactory;  
  8. import javax.xml.parsers.ParserConfigurationException;  
  9.   
  10. import org.apache.cxf.binding.soap.SoapMessage;  
  11. import org.apache.cxf.headers.Header;  
  12. import org.apache.cxf.interceptor.Fault;  
  13. import org.apache.cxf.phase.AbstractPhaseInterceptor;  
  14. import org.apache.cxf.phase.Phase;  
  15. import org.w3c.dom.Document;  
  16. import org.w3c.dom.Element;  
  17.   
  18. public class AddUserInterceptor extends AbstractPhaseInterceptor<SoapMessage>{  
  19.   
  20.     private String username ;  
  21.     private String password ;  
  22.       
  23.     public AddUserInterceptor(String username, String password) {  
  24.         super(Phase.PRE_PROTOCOL);  
  25.         this.username = username ;  
  26.         this.password = password ;  
  27.         System.out.println("AddUserInterceptor()...");  
  28.     }  
  29.   
  30.     @Override  
  31.     public void handleMessage(SoapMessage message) throws Fault {  
  32.         List<Header> headers = message.getHeaders() ;  
  33.           
  34.         DocumentBuilder builder = null ;  
  35.         try {  
  36.             builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();  
  37.         } catch (ParserConfigurationException e) {  
  38.             e.printStackTrace();  
  39.         }  
  40.         Document document = builder.newDocument() ;  
  41.         Element root = document.createElement("wiseweb") ;  
  42.         Element username = document.createElement("username") ;  
  43.         username.setTextContent(this.username);  
  44.         Element password = document.createElement("password") ;  
  45.         password.setTextContent(this.password);  
  46.         root.appendChild(username) ;  
  47.         root.appendChild(password) ;  
  48.         headers.add(new Header(new QName("wiseweb"), root)) ;  
  49.     }  
  50.   
  51. }  

[html] view plain copy  print?Spring中使用WebServiceSpring中使用WebService
  1. package com.wiseweb.ws.test;  
  2.   
  3. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  4.   
  5. import com.wiseweb.ws.Order;  
  6. import com.wiseweb.ws.OrderProcess;  
  7.   
  8. public class ClientTest {  
  9.   
  10.     public static void main(String[] args) {  
  11.         ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[]  
  12.                              {"client-beans.xml"});  
  13.         OrderProcess orderProcess = (OrderProcess)context.getBean("orderClient") ;  
  14.         Order order = orderProcess.getMessById(230) ;  
  15.         System.out.println(order);  
  16.     }  
  17. }  

Client-beans.xml

[html] view plain copy  print?Spring中使用WebServiceSpring中使用WebService
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.       xmlns:jaxws="http://cxf.apache.org/jaxws"  
  5.       xsi:schemaLocation="  
  6.    http://www.springframework.org/schema/beans  
  7.    http://www.springframework.org/schema/beans/spring-beans.xsd  
  8.    http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">  
  9.      
  10.     <jaxws:client id="orderClient"   
  11.         serviceClass="com.wiseweb.ws.OrderProcess"    
  12.         address="http://localhost:8087/day02_ws_cxf_spring/orderprocess">  
  13.         <jaxws:outInterceptors>  
  14.             <bean class="com.wiseweb.ws.interceptor.AddUserInterceptor">  
  15.                 <constructor-arg name="username" value="wuhaixu" />  
  16.                 <constructor-arg name="password" value="1234567" />  
  17.             </bean>  
  18.         </jaxws:outInterceptors>  
  19.     </jaxws:client>  
  20. </beans>  

把Server端的项目部署并运行,运行Client端。结果为:

Server:

[html] view plain copy  print?Spring中使用WebServiceSpring中使用WebService
  1. 用户名与密码正确,通过验证!  
  2. server :230  


Client:

[html] view plain copy  print?Spring中使用WebServiceSpring中使用WebService
  1. AddUserInterceptor()...  
  2. Order [id=230name=飞机, price=100000.0]  
上一篇:android程序崩溃后重启


下一篇:LeetCode 430. Flatten a Multilevel Doubly Linked List