带有Spring AOP的Apache CXF REST服务

时间:2010-06-15 13:51:14

标签: aop cxf jax-rs spring-aop

我正在努力让Apache CXF JAX-RS服务与Spring AOP一起使用。我创建了一个简单的日志记录类:

public class AOPLogger {

    public void logBefore(){
        System.out.println("Logging Before!");
    }

}

My Spring配置(beans.xml):

<aop:config>
    <aop:aspect id="aopLogger" ref="test.aop.AOPLogger">
        <aop:before method="logBefore" pointcut="execution(* test.rest.RestService.*(..))"/>
    </aop:aspect>
</aop:config>
<bean id="aopLogger" class="test.aop.AOPLogger"/>

当调用Method getServletRequest()时,我总是在RestService中获得一个NPE,它具有:

return messageContext.getHttpServletRequest();

如果我删除了aop配置或从我的beans.xml中注释掉它,一切正常。

我所有的实际Rest服务都扩展了test.rest.RestService(这是一个类)并调用了getServletRequest()。我只是试图根据CXF JAX-RS文档中的示例启动并运行AOP。我做错了什么?

1 个答案:

答案 0 :(得分:0)

您只需要让您的资源类使用方法

实现一些简单的接口

@Context void setMessageContext(MessageContext mc){}

这将使CXF SpringAOPHelper能够发现方法