首先说 cxf 与 spring 整合:
接口:
package org.sttc.service; import javax.jws.WebParam; import javax.jws.WebResult; import javax.jws.WebService; @WebService public interface IMyService { @WebResult(name="addResult") public int add(@WebParam(name="a")int a,@WebParam(name="b")int b); public int minus(@WebParam(name="a")int a,@WebParam(name="b")int b);
实现类:
package org.sttc.service; import javax.jws.WebService; @WebService(endpointInterface="org.sttc.service.IMyService") public class MyServiceImpl implements IMyService{ @Override public int add(int a,int b) { System.out.println(a+"+"+b+"="+(a+b)); return a+b; } @Override public int minus(int a,int b) { System.out.println(a+"-"+b+"="+(a-b)); return a-b; }
application-server.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:lang="http://www.springframework.org/schema/lang" 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://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang.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"/> <bean id="serviceImpl" class="com.yx.springInter.ServiceImpl"> </bean> <jaxws:endpoint implementor="#serviceImpl" address="/hello"> <!-- webservice --> </jaxws:endpoint> </beans>
web.xml:
<span style="white-space:pre"> </span><listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>
<span style="white-space:pre"> </span>//把新写的applicationContext-server.xml引入进来 <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml classpath:applicationContext-server.xml </param-value> </context-param>
<span style="white-space:pre"> </span>//加一个拦截器的监听
<span style="white-space:pre"> <listener> <span style="white-space:pre"> </span><listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class> <span style="white-space:pre"> </span></listener></span> - <!-- 配置webservice --> - <servlet> <servlet-name>CXFServlet</servlet-name> <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class> <load-on-startup>2</load-on-startup> </servlet> - <servlet-mapping> <servlet-name>CXFServlet</servlet-name> <url-pattern>/world/*</url-pattern> </servlet-mapping>拦截器类:
</pre><p><pre name="code" class="java">package com.yx.filter; import java.io.IOException; import java.io.InputStream; import java.util.Enumeration; import java.util.Hashtable; import java.util.Map; import java.util.Properties; import java.util.Set; import javassist.bytecode.Descriptor.Iterator; import javax.servlet.FilterChain; import javax.servlet.servletexception; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter; public class ServiceFilter extends StrutsPrepareAndExecuteFilter{ public void doFilter(ServletRequest req,ServletResponse res,FilterChain chain)throws IOException,servletexception{ HttpServletRequest request = (HttpServletRequest) req; <pre name="code" class="java">if(URI.contains("hello")){ String reqURI= request.getRequestURI();if(URI.contains("hello")){chain.doFilter(req,res);}else{super.doFilter(req,res,chain);}}}
输入http://localhost:8080/项目名/world/hello?wsdl 出现一个wsdl文件,成功。
然后开始限制IP地址,网上的文章跟我写的拦截器不同,着实困扰了我好几天,原来,原来只要在拦截器里加一行代码判断就行了,我就特么擦啦。
if(URI.contains("hello") && request.getRemoteAddr("192.168.*.***")){
properties配置文件:
URI=/项目名/ws/hello add=192.168.1.888
拦截器类:
package com.yx.filter; import java.io.IOException; import java.io.InputStream; import java.util.Enumeration; import java.util.Hashtable; import java.util.Map; import java.util.Properties; import java.util.Set; import javassist.bytecode.Descriptor.Iterator; import javax.servlet.FilterChain; import javax.servlet.servletexception; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter; public class ServiceFilter extends StrutsPrepareAndExecuteFilter{ public void doFilter(ServletRequest req,servletexception{ Properties pros = new Properties(); String URI = "";<span style="white-space:pre"> </span> String add = "";<span style="white-space:pre"> </span>//客户端地址 InputStream in = getClass().getResourceAsstream("/webservice.properties");//配置文件的名字:webservice.properties pros.load(in); <span style="white-space:pre"> </span>//加载配置文件 in.close(); if(pros.containsKey("URI")){<span style="white-space:pre"> </span>//配置文件的key 等于 URI 的话 URI = pros.getProperty("URI");<span style="white-space:pre"> </span>//取到配置文件的value } if(pros.containsKey("add")){ add = pros.getProperty("add"); } HttpServletRequest request = (HttpServletRequest) req; String reqAdd = request.getRemoteAddr(); String reqURI= request.getRequestURI(); if(URI.contains(reqURI) && add.equals(reqAdd)){ chain.doFilter(req,res); }else{ super.doFilter(req,chain); } } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。