`
刘宗才
  • 浏览: 33973 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

cxf与struts2拦截器冲突的解决方案:cxf+spring+struts2+jetty

阅读更多
最近学习接口,学习了下cxf,用jetty部署访问的时候,发现接口不能访问;百度了很多,最终找到比较好的解决方案;

sturts2配置:
<!-- 设置strus拦截器 -->
<filter>
<filter-name>struts</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>


cxf拦截器配置:
<!-- 设置cxf接口配置 -->
<listener>
<listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
</listener>

<servlet>
<servlet-name>CXFService</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>CXFService</servlet-name>
<url-pattern>/myCXF/*</url-pattern>
</servlet-mapping>


结果访问的时候,struts率先被执行。



解决该问题好的方案就是重写struts2的拦截器:

package com.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 ExtendStrutsFilter extends StrutsPrepareAndExecuteFilter{
    public void doFilter(ServletRequest req, ServletResponse res,FilterChain chain) throws IOException, ServletException { 
        HttpServletRequest request = (HttpServletRequest) req; 
        //不过滤的url,可以自行添加 
        if (request.getRequestURI().contains("/myCXF")) { 
            //System.out.println("使用自定义的过滤器"); 
            chain.doFilter(req, res); 
        }else{ 
            //System.out.println("使用默认的过滤器"); 
            super.doFilter(request, res, chain);
        } 
    } 
}


然后重新配置struts2的拦截器:
<filter>
<filter-name>struts</filter-name>
<filter-class>com.filter.ExtendStrutsFilter</filter-class>
</filter>

此时访问就没有问题了,对原项目影响不大 同时修改也很方便;


如果有疑问:请加扣扣群:123866420;加时说明原因;


分享到:
评论

相关推荐

    CXF+Spring 完整版例子

    5. **拦截器和行为**:CXF允许使用拦截器和行为来扩展其功能,例如日志记录、安全检查、性能监控等。这些可以在Spring配置中声明并注入到CXF的服务上下文中。 6. **Spring AOP集成**:通过Spring的AOP(面向切面...

    springBoot完整整合WebService框架CXF示例

    5. **CXF拦截器**:CXF拦截器是处理消息传递过程中的钩子,可以在消息发送前、发送后、接收前、接收后等阶段进行操作。在这个示例中,拦截器用于实现简单的授权校验。你可以定义一个实现了`ClientInterceptor`或`...

    CXF 使用实例集成

    这个集成实例主要展示了如何使用CXF来创建和消费Web服务,包括设置输入和输出拦截器、用户验证以及文件上传等功能。让我们深入探讨一下这些知识点。 1. **CXF 创建 Web Service** - **服务接口定义**:首先,我们...

    cxf webserice 开发指南

    你可以自定义拦截器,或者使用CXF提供的预定义拦截器。 **四、CXF WebService 中传递复杂类型对象** 除了基本类型,CXF还支持在Web服务中传递复杂类型对象。你可以定义Java类来表示这些复杂类型,并在服务接口中...

    cxf-spring

    9. **消息拦截器**:CXF允许使用Spring配置消息拦截器,这些拦截器可以在消息发送前或接收后执行特定操作,如性能监控、消息格式转换等。 10. **部署与运行**:集成后的项目可以被部署到Spring容器(如Tomcat、...

    CXF方式开发和部署webservice应用

    - **拦截器**: 可以使用CXF的拦截器机制,对服务调用进行拦截,实现日志记录、性能监控等功能。 - **数据绑定**: 支持JAXB和XMLBeans等多种数据绑定技术,用于对象与XML之间的转换。 综上所述,CXF为开发者提供了...

    Cxf客户端及服务器端,实现客户端和服务器端的权限验证

    - 配置CXF服务端,添加安全拦截器,如WSS4JInInterceptor和WSS4JOutInterceptor,以处理进来的和发出的消息。 - 创建Realm并设置用户、角色和权限。这通常通过修改CXF的`jetty.xml`或`cxf.xml`配置文件完成。 - ...

    CXF开发实例.pdf

    CXF支持拦截器机制,可以在消息传递过程中插入自定义逻辑。拦截器在处理Web服务请求时可以在不同阶段进行相应的处理,比如日志记录、消息转换、安全性校验等。 ### CXF开发实例中涉及的具体组件 - **Apache CXF**:...

    非常详细的cxf开发学习教程集合

    8. **拦截器和扩展点**:CXF提供了一套强大的拦截器和扩展点机制,可以用来定制服务行为,如日志记录、性能监控、异常处理等。 9. **测试和调试**:了解如何编写单元测试和集成测试来验证你的CXF服务,以及如何利用...

    apache-cxf-2.2.9

    - **拦截器和终结点**:CXF提供了丰富的拦截器和终结点接口,允许自定义行为,如日志记录、安全检查等。 - **多种传输和绑定机制**:CXF支持HTTP、HTTPS、JMS等多种传输方式,同时可以绑定到不同的消息格式,如SOAP...

    apache-cxf-3.2.4

    - **拦截器和扩展**:CXF提供了一种机制,允许开发者通过拦截器来插入自定义的行为,例如日志记录、安全检查等。此外,它还支持多种扩展,如数据绑定、MTOM(Message Transmission Optimization Mechanism)和SWA...

    CXF 编写 WebServer DEMO

    2. **配置CXF**:使用CXF的Spring配置或Java配置来设置服务端点、绑定和拦截器。 3. **启动服务器**:通过CXF的Servlet或Jetty等轻量级容器启动Web服务器。 4. **发布服务**:将服务部署到服务器上,使其可以通过...

    CXF 学习必备神器

    9. **拦截器与插件**:利用CXF的拦截器机制进行服务拦截,实现日志记录、性能监控等功能,同时了解CXF的扩展插件系统。 10. **测试与调试**:熟悉CXF提供的测试工具,如CXF TestSuite,以及如何利用它们进行服务的...

    CXF WebService 开发指南、技术文档

    #### 三、CXF 对 Interceptor 拦截器的支持 CXF支持使用Interceptor来扩展服务行为,类似于Servlet中的Filter。Interceptor可以用来处理请求和响应消息的预处理和后处理操作。 1. **定义Interceptor**: - 继承`...

    CXF实现webservice

    无论你是需要构建SOAP还是RESTful服务,CXF都能提供完整的解决方案。通过阅读提供的“开发基于CXF的RESTFul Webservice.txt”文档和使用“apache-cxf-2.4.2.zip”中的库,你可以深入了解并实践CXF的使用。

    apache-cxf-3.4.5.zip

    6. **插件系统**:CXF拥有强大的插件体系,允许扩展和定制,如Spring框架的集成、安全认证、拦截器等。 **3.4.5版本可能包含的改进:** 1. **性能提升**:新版本通常会针对之前版本的性能瓶颈进行优化,提高服务...

    CXF webservers资源

    - 开发者可以通过插件机制添加自定义功能,例如拦截器、过滤器、数据绑定等。 - 这使得CXF能够适应各种复杂的业务场景和自定义需求。 10. **Apache CXF 3.1.16版本** - 这个版本可能包含了性能优化、bug修复和新...

    CXF需要的jar

    6. **扩展性**:CXF拥有丰富的插件和扩展机制,允许开发者根据需求定制和扩展其功能,比如添加自定义拦截器、数据绑定和消息格式。 总结,"CXF需要的jar"涉及到的不仅仅是Java库的集合,而是整个基于Apache CXF框架...

    cxf开发实例

    同时,Spring的AOP(面向切面编程)功能也可以与CXF的拦截器一起使用,提供更灵活的服务处理。 总结,CXF是一个强大的Web服务框架,涵盖了Web服务开发的各个方面。通过上述内容,我们可以理解CXF的基本使用,包括...

Global site tag (gtag.js) - Google Analytics