Spring中使用WebService

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

Server代码:

[html] view plain copy

 print?

  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?

  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?

  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?

  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?

  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?

  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?

  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?

  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?

  1. 用户名与密码正确,通过验证!  
  2. server :230  

Client:

[html] view plain copy

 print?

  1. AddUserInterceptor()...  
  2. Order [id=230, name=飞机, price=100000.0]  
时间: 2025-01-20 16:52:49

Spring中使用WebService的相关文章

Spring中bean的基本xml配置

xml   在spring容器内拼凑bean叫作装配.装配bean的时候,你是在告诉容器,需要哪些bean,以及容器如何使用依赖注入将它们配合在一起.    理论上,bean装配可以从任何资源获得,包括属性文件,关系数据库等,但xml是最常见的spring 应用系统配置源.Spring中的几种容器都支持使用xml装配bean,包括:    XmlBeanFactory ,    ClassPathXmlApplicationContext ,    FileSystemXmlApplicatio

spring中DispatcherServlet的运行机制

servlet Spring中DispatcherServlet的运行机制 DispatcherServlet是spring的web框架(以下简称SpringWeb)中的核心servlet."Spring的web框架--象其它web框架一样--是一个请求驱动的web框架,其设计围绕一个能将请求分发到控制器的servlet,它也提供其它功能帮助web应用开发."----<Spring Framework 开发参考手册(中文版)>而在SpringWeb框架中这个servlet就

两种方法测试spring中的jdbc

两种方法测试spring中的jdbc  JDBC是一个非常基础的数据存取API,spring对其进行简单的封装,  下面以sqlserver中自带的pubs数据库Authors表进行测试.   1):编写Authors.java,其每个对象对应于数据库中的一条记录   package jdbc;public class Authors {   String  lname=null;   String fname=null;   String phone=null;   String addres

在VB6或ASP中调用webservice

web VB6或ASP中调用webservice Web Services技术使异种计算环境之间可以共享数据和通信,达到信息的一致性.我们可以利用 HTTP POST/GET协议.SOAP协议来调用Web Services. 一. 利用SOAP协议在VB6中调用Web Services ; 首先利用.net发布一个简单的Web Services <WebMethod()> _ Public Function getString(ByVal str As String) As String Re

spring入门(4) spring中Bean的生命周期总结

Spring中Bean的生命周期,在学习spring的过程中bean的生命周期理解对学习spring有很大的帮助,下面我就分别介绍在 ApplicationContext和BeanFactory中Bean的生命周期. 1.在ApplicationContext中Bean的生命周期 生命周 期执行的过程如下: 1.需找所有的bean根据bean定义的信息来实例化bean 2.使用依赖注入,spring按bean 定义信息配置bean的所有属性 3.若bean实现了BeanNameAware接口,工

Spring中ApplicationContext的事件机制(二 内定事件)

在Spring中已经定义了五个标准事件,分别介绍如下: 1)ContextRefreshedEvent:当ApplicationContext初始化或者刷新时触发该事件. 2)ContextClosedEvent:当ApplicationContext被关闭时触发该事件.容器被关闭时,其管理的所有 单例Bean都被销毁. 3)RequestHandleEvent:在Web应用中,当一个http请求(request)结束触发该事件. ContestStartedEvent:Spring2.5新增的

Spring中ApplicationContext的事件机制(一 )

在Windows编程中,我们常常需要处理各类事件,比如鼠标单击事件.双击事件.在Spring中, ApplicationContext也有发布和监听时间的能力.我们知道,在windows开发中,如果要响应某个事件,我 们只需要编写相应windows消息的响应函数就可以了.比如鼠标单击事件,相应的消息就是 WM_LBUTTONDOWN .在Spring中也是一样,Spring中ApplicationEvent类及其子类就相当于Windows中的消 息,事件监听器ApplcationListener

Spring中的四种声明式事务的配置

Spring中的四种声明式事务的配置Spring容器中有两种思想很重要,也就是我们常用的Ioc和Aop,如果理解了这两种思想,对于我们学习设计模式和编程有很大的帮助,美国四人帮(GOF)写的设计模式中,有很多都用到了Ioc的思想.简单的说就是依赖注入的思想.常见的一种情况:如果一个类中要复用另外一个类中的功能时,我们可能会首先想到继承,如果你知道Ioc这种思想的话,我想你不会用继承,你会马上想到把要用到功能抽取出来,在我们要用到的类中只需通过set方法简单的注入就可以了,其实这里用到了对象的组合

Spring中的Template和Callback模式

Spring中的Callback模式与Template模式合用,随处可见.Template method被广泛的使用,像Servlet就是使用这个模式.Template mothod模式虽然能简化很多重复的代码,但这种模式的也有不少限制.Template mothod将一个功能的实现分成许多小的步骤,在父类中定义了这些步骤的顺序,让子类来具体实现每一个小的步骤.这些小的步骤是protected,以防止用户不正确的使用这些小的步骤而产生异常.这样就产生了一个限制,那就是你需要继承Template然