struts2整合CXF访问路径冲突问题

来源:互联网 发布:国内航空英语翻译软件 编辑:程序博客网 时间:2024/06/08 14:18

     在用struts2整合cxf提供webservice供外部调用时,会出现访问路径冲突问题,原因是struts2的过滤器把所有的请求都拦截了,当我们调用webservice时,也会被拦截,在路由map中找不到匹配的路径 则报错。

 1)解决方法:

     1:新建一个类继承struts2中提供的过滤器类

     2:重写doFiter方法,对调用webservice的访问路径放行,其他的则默认执行struts2的拦截流程

     3:在web.xml 使用我们定义的过滤器类替换掉struts2的

 2)实现代码

package yuan.filter;import java.io.IOException;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 YuanStrutsPrepareAndExecuteFilter extendsStrutsPrepareAndExecuteFilter {@Overridepublic void doFilter(ServletRequest req, ServletResponse res,FilterChain chain) throws IOException, ServletException {HttpServletRequest request = (HttpServletRequest) req;// 对调用webservice的访问路径放行if (request.getRequestURI().contains("/services")) {chain.doFilter(req, res);} else {super.doFilter(req, res, chain);}}}
 3)在web.xml中使用重写后的过滤器类替换掉struts2的:

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"id="WebApp_ID" version="3.0"><!-- cxf 整合spring --><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:yuan/resource/application.xml</param-value></context-param><filter><filter-name>structs2</filter-name><filter-class>yuan.filter.YuanStrutsPrepareAndExecuteFilter</filter-class></filter><filter-mapping><filter-name>structs2</filter-name><url-pattern>/*</url-pattern></filter-mapping><servlet><servlet-name>cxf</servlet-name><servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>cxf</servlet-name><url-pattern>/services/*</url-pattern></servlet-mapping><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list></web-app>


0 0
原创粉丝点击