WebService学习笔记-添加拦截器到基于Spring的Webservice
发布时间:2020-12-16 22:23:05 所属栏目:安全 来源:网络整理
导读:服务器端目录结构如图。在上一篇博文中的项目的基础上添加了一个interceptor类。 CheckUserInterceptor.java拦截器 package?com.umgsai.interceptors;import?javax.xml.namespace.QName;import?org.apache.cxf.binding.soap.SoapMessage;import?org.apache.c
服务器端目录结构如图。在上一篇博文中的项目的基础上添加了一个interceptor类。 CheckUserInterceptor.java拦截器 package?com.umgsai.interceptors; 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);//?准备协议化时拦截 } @Override public?void?handleMessage(SoapMessage?message)?throws?Fault?{ Header?header?=?message.getHeader(new?QName("atguigu")); 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("umgsai")&&password.equals("123456"))?{ System.out.println("通过拦截器..."); return; } } //不能通过 System.out.println("没有通过拦截器"); 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"> <!--?引入CXF的核心配置?--> <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="orderWS"?implementor="com.umgsai.ws.impl.OrderWSImpl" address="/orderWS"> <jaxws:inInterceptors> <bean?class="com.umgsai.interceptors.CheckUserInterceptor"> </bean> </jaxws:inInterceptors> </jaxws:endpoint> </beans>
客户端拦截interceptor拦截器 AddUserInterceptor.java拦截器 package?com.umgsai.ws.interceptors; import?java.util.List; 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.apache.xml.utils.DOMHelper; 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实例..."); } /* ?*? ??<soap:Envelope?xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> ??<soap:Header> ??<atguigu> ??<username>umgsai</username> ??<password>123456</password> ??</atguigu> ??</soap:Header> ??<soap:Body> ??<ns1:sayHi?xmlns:ns1="http://demo.com/"> ?? <text>test~~~</text> ??</ns1:sayHi> ??</soap:Body> ??</soap:Envelope> ?*? ?*?*/ @Override public?void?handleMessage(SoapMessage?message)?throws?Fault?{ List<Header>?headers?=?message.getHeaders(); Document?document?=?DOMHelper.createDocument(); Element?rootElement?=?document.createElement("atguigu"); Element?usernameElement?=?document.createElement("username"); usernameElement.setTextContent(username); rootElement.appendChild(usernameElement); Element?passwordElement?=?document.createElement("password"); passwordElement.setTextContent(password); rootElement.appendChild(passwordElement); headers.add(new?Header(new?QName("atguigu"),?rootElement)); System.out.println("拦截..."); } } beans-client.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.umgsai.ws.OrderWS" address="http://localhost:8080/WS_spring/orderWS"> <jaxws:outInterceptors> <bean?class="com.umgsai.ws.interceptors.AddUserInterceptor"> <constructor-arg?name="username"?value="umgsai"/> <constructor-arg?name="password"?value="123456"/> </bean> </jaxws:outInterceptors> </jaxws:client> </beans> 参考?http://www.voidcn.com/article/p-zeqwdzeu-qg.html 本文出自 “优赛工作室” 博客,请务必保留此出处http://www.voidcn.com/article/p-cfoxeoci-qg.html (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |