加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

cxf webservice + srping 整合 + 限制IP地址 + properties配置文

发布时间:2020-12-16 23:26:27 所属栏目:安全 来源:网络整理
导读:首先说 cxf 与 spring 整合: 接口: package org.sttc.service;import javax.jws.WebParam;import javax.jws.WebResult;import javax.jws.WebService;@WebServicepublic interface IMyService {@WebResult(name="addResult")public int add(@WebParam(name=

首先说 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.*.***")){


如果做项目的话,建议做一个IP地址的配置文件方便修改。

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);
			}
	}
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读