系统中用到webservice,经火龙果指点使用了cxf,现在配置、访问都可以了,但在和struts2整合时问题出现了:
struts2的FilterDispatcher过滤所有的请求
<filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern/*</url-pattern>
</filter-mapping>cxf配置到ws目录下
<servlet-mapping>
  <servlet-name>CXFServlet</servlet-name>
  <url-pattern>/ws/*</url-pattern>
</servlet-mapping>
这样struts2就把cxf的请求给拦截了,导致访问webservice不成功,如果去掉struts2的配置则webservice访问可以正常进行,现在想找一个方法是cxf和struts2能共存,谢谢大家!!
我试过
修改struts2的拦截为:
  <filter-name>struts2</filter-name>
    <url-pattern>/struts/*</url-pattern>
    <url-pattern>/frame/*</url-pattern>
    <url-pattern>*.action</url-pattern>
  </filter-mapping>
这样不可以,访问带有struts2 标签的jsp页面会出错,org.apache.jasper.JasperException: The Struts dispatcher cannot be found.  This is usually caused by using Struts tags without the associated filter. Struts tags are only usable when the request has passed through its servlet filter, which initializes the Struts dispatcher needed for this tag.

解决方案 »

  1.   

    帮你顶顶  webservice没用过
      

  2.   

    把拦截器的顺序位置改变下试验下。
    将<servlet-mapping>
      <servlet-name>CXFServlet</servlet-name>
      <url-pattern>/ws/*</url-pattern>
    </servlet-mapping>放置在上面试试。
    我记得以前碰到个问题就是通过改变位置就可以了。
      

  3.   

    先看看下··还没有看struts2了··
      

  4.   

    为什么一定要把 WebServices 工程与你的 Web 工程揉在一起呢?
      

  5.   

    <filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
    </filter>
    <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>*.do</url-pattern>
    </filter-mapping>
      

  6.   

    当时架构就是这样设计的,整个webservice的服务器端和客户端作为整个项目的一个模块,所以必须柔和在一起,况且这个项目的服务器端还会用到别的模块的service
      

  7.   

    没这么做过,不过,觉得@ 这样struts2就把cxf的请求给拦截了,导致访问webservice不成功,这样的说法没道理,过滤器走完之后,自然会再走CXFServlet,没听说Struts2过滤器会吞请求的。我们S1和S2集成,不也是好的么。
    是不是其他错误,
    有别的出错信息么?
      

  8.   

    我也遇到类似的问题,可以把jsp 也加入struts2的过滤器中,这样struts2的标签就不会有问题了,如下:
    系统中用到webservice,经火龙果指点使用了cxf,现在配置、访问都可以了,但在和struts2整合时问题出现了:
    struts2的FilterDispatcher过滤所有的请求
     这样struts2就把cxf的请求给拦截了,导致访问webservice不成功,如果去掉struts2的配置则  <filter-name>struts2</filter-name>
      <url-pattern>/struts/*</url-pattern>
      <url-pattern>/frame/*</url-pattern>
      <url-pattern>*.action</url-pattern>
      <url-pattern>*.jsp</url-pattern>
      </filter-mapping>
     
      

  9.   

           <filter-mapping>
    <filter-name>struts2Filter</filter-name>
    <url-pattern>*.action</url-pattern>
    </filter-mapping>        <servlet-mapping>
    <servlet-name>CXFServlet</servlet-name>
    <url-pattern>/services/*</url-pattern>
    </servlet-mapping>这样试试