解决CXF与Struts2路径冲突

struts2配置时用的filter拦截所有请求路径/*,而cxf需要的处理方式与一般的请求不同
解决方法
写一个filter继承StrutsPrepareAndExecuteFilter
/**
 * 解决和struts2的路径冲突
 */
public class FilterMy extends StrutsPrepareAndExecuteFilter {
    @Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) req;
        if (request.getRequestURI().contains("webservice")) { 
          //如果是访问webservice,不进行过滤
            chain.doFilter(req, res);
        } else {
            super.doFilter(req,res,chain);
        }
    }
}


<filter>
<filter-name>myFilter</filter-name>
<filter-class>com.svwpu.pukci.base.filter.FilterMy</filter-class>
</filter>

<filter-mapping>
<filter-name>myFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
<!-- CXF配置 begin -->
    <servlet>
        <description>Apache CXF Endpoint</description>
        <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>/webservice/*</url-pattern>
    </servlet-mapping>
    <!-- CXF配置 end -->

猜你喜欢

转载自liumayulingyan.iteye.com/blog/2031709