No bean named 'cxf' is defined 解决Struts和CXF启动tomcat报错

时间:2022-02-24 17:04:11

当struts2和cxf同时使用时,启动tomcat会报出错误:

org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'cxf' is defined

No bean named 'cxf' is defined 解决Struts和CXF启动tomcat报错

造成这种情况的原因是struts2的过滤器:org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

配置拦截了CXF的请求,总结了两种解决办法:

一:将struts2的拦截改为.action(该方法需要Struts2的访问路径都要以.action结束)

No bean named 'cxf' is defined 解决Struts和CXF启动tomcat报错

No bean named 'cxf' is defined 解决Struts和CXF启动tomcat报错

二.自定义一个struts2的拦截器,继承struts2的拦截器,在拦截器中对于cxf的请求放行

自定义过滤器

No bean named 'cxf' is defined 解决Struts和CXF启动tomcat报错

然后,将自定义的过滤器在web.xml中配置

No bean named 'cxf' is defined 解决Struts和CXF启动tomcat报错

这样就可以解决两个拦截器冲突的问题