Spring中使用WebService

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

Server代码:

package com.wiseweb.bean;public class Order {private int id ;private String name ;private double price ;public Order() {super();}public Order(int id, String name, double price) {super();this.id = id;this.name = name;this.price = price;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}@Overridepublic String toString() {return "Order [id=" + id + ", name=" + name + ", price=" + price + "]";}}package com.wiseweb.ws;import javax.jws.WebMethod;import javax.jws.WebService;import com.wiseweb.bean.Order;@WebServicepublic interface OrderProcess {@WebMethodOrder getMessById(int id) ;}package com.wiseweb.ws;import com.wiseweb.bean.Order;public class OrderProcessImpl implements OrderProcess {public OrderProcessImpl() {System.out.println("OrderProcessImpl()");}@Overridepublic Order getMessById(int id) {System.out.println("server :" + id);return new Order(id,"飞机",100000);}}package com.wiseweb.ws.interceptor;import javax.xml.namespace.QName;import org.apache.cxf.binding.soap.SoapMessage;import org.apache.cxf.headers.Header;import org.apache.cxf.interceptor.Fault;import org.apache.cxf.phase.AbstractPhaseInterceptor;import org.apache.cxf.phase.Phase;import org.w3c.dom.Element;public class CheckUserInterceptor extends AbstractPhaseInterceptor<SoapMessage>{public CheckUserInterceptor() {super(Phase.PRE_PROTOCOL);System.out.println("CheckUserInterceptor.CheckUserInterceptor()");}@Overridepublic void handleMessage(SoapMessage message) throws Fault {Header header = message.getHeader(new QName("wiseweb")) ;if(header != null) {Element element = (Element)header.getObject() ;String username = element.getElementsByTagName("username").item(0).getTextContent() ;String password = element.getElementsByTagName("password").item(0).getTextContent() ;if(username.equals("wuhaixu") && password.equals("123456")) {System.out.println("用户名与密码正确,通过验证!");return ;}else {throw new Fault(new RuntimeException("请输入正确的用户名和密码!")) ;}}else {throw new Fault(new RuntimeException("请输入用户名和密码!")) ;}}}beans.xml

<?xml version="1.0" encoding="utf-8"?><beans xmlns=""xmlns:xsi=""xmlns:jaxws=""xsi:schemaLocation=" http://cxf.apache.org/schemas/jaxws.xsd"><import resource="classpath:META-INF/cxf/cxf.xml" /><import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" /><import resource="classpath:META-INF/cxf/cxf-servlet.xml" /><jaxws:endpointid="orderProcess"implementor="com.wiseweb.ws.OrderProcessImpl"address="/orderprocess"><jaxws:inInterceptors><bean class="com.wiseweb.ws.interceptor.CheckUserInterceptor"></bean></jaxws:inInterceptors></jaxws:endpoint></beans>Client:

package com.wiseweb.ws.interceptor;import java.util.List;import javax.xml.namespace.QName;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.ParserConfigurationException;import org.apache.cxf.binding.soap.SoapMessage;import org.apache.cxf.headers.Header;import org.apache.cxf.interceptor.Fault;import org.apache.cxf.phase.AbstractPhaseInterceptor;import org.apache.cxf.phase.Phase;import org.w3c.dom.Document;import org.w3c.dom.Element;public class AddUserInterceptor extends AbstractPhaseInterceptor<SoapMessage>{private String username ;private String password ;public AddUserInterceptor(String username, String password) {super(Phase.PRE_PROTOCOL);this.username = username ;this.password = password ;System.out.println("AddUserInterceptor()…");}@Overridepublic void handleMessage(SoapMessage message) throws Fault {List<Header> headers = message.getHeaders() ;DocumentBuilder builder = null ;try {builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();} catch (ParserConfigurationException e) {e.printStackTrace();}Document document = builder.newDocument() ;Element root = document.createElement("wiseweb") ;Element username = document.createElement("username") ;username.setTextContent(this.username);Element password = document.createElement("password") ;password.setTextContent(this.password);root.appendChild(username) ;root.appendChild(password) ;headers.add(new Header(new QName("wiseweb"), root)) ;}}package com.wiseweb.ws.test;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.wiseweb.ws.Order;import com.wiseweb.ws.OrderProcess;public class ClientTest {public static void main(String[] args) {ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"client-beans.xml"});OrderProcess orderProcess = (OrderProcess)context.getBean("orderClient") ;Order order = orderProcess.getMessById(230) ;System.out.println(order);}}Client-beans.xml

对于旅行,从来都记忆模糊。记不得都去了哪些地方,

Spring中使用WebService

相关文章:

你感兴趣的文章:

标签云: