Spring中使用WebService
来源:互联网 发布:html2canvas.js api 编辑:程序博客网 时间:2024/06/09 14:20
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="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://cxf.apache.org/jaxws 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:endpoint id="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
<?xml version="1.0" encoding="utf-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"> <jaxws:client id="orderClient" serviceClass="com.wiseweb.ws.OrderProcess" address="http://localhost:8087/day02_ws_cxf_spring/orderprocess"> <jaxws:outInterceptors> <bean class="com.wiseweb.ws.interceptor.AddUserInterceptor"> <constructor-arg name="username" value="wuhaixu" /> <constructor-arg name="password" value="1234567" /> </bean> </jaxws:outInterceptors></jaxws:client></beans>
把Server端的项目部署并运行,运行Client端。结果为:
Server:
用户名与密码正确,通过验证!server :230
Client:
AddUserInterceptor()...Order [id=230, name=飞机, price=100000.0]
0 0
- Spring中使用WebService
- Spring项目中使用webservice实现h5的websocket通信
- 在java中使用spring整合cxf实现webservice
- 使用Spring+Xfire构建WebService
- 使用spring-ws开发webservice
- 使用spring-ws开发webservice
- Spring使用CFX发布Webservice
- Java中使用webservice
- PHP中使用WebService
- javaEE中使用webservice
- webservice中使用socket
- Android中使用WebService
- Web应用中使用CXF不基于Spring的WebService发布
- Jax-ws 开发webService ,并使用spring注入service类中遇到 空指针
- Jax-ws 开发webService ,并使用spring注入service类中遇到 空指针
- webservice学习之使用Apache CXF和spring搭建webservice
- WebService学习笔记-使用CXF编写基于Spring的Webservice
- WebService学习总结九 使用Spring发布WebService
- APP图标更改
- 转--Python 列表(list)、字典(dict)、字符串(string)常用基本操作小结
- rar这奇葩的解压码方式
- 设计模式学习笔记---桥接模式bridge(Java版)
- android APK内存分配
- Spring中使用WebService
- android sdk content loader 0% eclipse 打开卡住
- 代码控制EditText是否显示密码样式
- 如何在window上把你的项目提交到github
- c#对应js的编码解码
- 黑马程序员--练习题汇总(未完待续)
- android 代码卸载指定APK小结
- IOS如何使用第三方字体
- 新版SDWebImage的使用(转)