日期:2014-05-20  浏览次数:20766 次

cxf 和struts2 整合问题
系统中用到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.


------解决方案--------------------
帮你顶顶 webservice没用过
------解决方案--------------------
把拦截器的顺序位置改变下试验下。
将<servlet-mapping>
<servlet-name>CXFServlet</servlet-name>
<url-pattern>/ws/*</url-pattern>
</servlet-mapping>放置在上面试试。
我记得以前碰到个问题就是通过改变位置就可以了。
------解决方案--------------------
先看看下··还没有看struts2了··
------解决方案--------------------
struts2 标签缺失
------解决方案--------------------
为什么一定要把 WebServices 工程与你的 Web 工程揉在一起呢?
------解决方案--------------------
改成用后缀名匹配过滤
------解决方案--------------------
<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>
------解决方案--------------------
没这么做过,不过,觉得

@ 这样struts2就把cxf的请求给拦截了,导致访问webservice不成功,

这样的说法没道理,过滤器走完之后,自然会再走CXFServlet,没听说Struts2过滤器会吞请求的。我们S1和S2集成,不也是好的么。
是不是其他错误,
有别的出错信息么?