2010-06-15 110 views
1

我正在嘗試使用Spring AOP來獲得Apache CXF JAX-RS服務。我創建了一個簡單的日誌類:Apache CXF REST服務w/Spring AOP

public class AOPLogger { 

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

} 

我的Spring配置(beans.xml文件):當呼叫的方法getServletRequest做出

<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"/> 

我總是在RestService的NPE() ,它有:

return messageContext.getHttpServletRequest(); 

如果我刪除aop配置或從我的beans.xml註釋它,一切工作正常。

我所有的實際Rest服務擴展test.rest.RestService(這是一個類)並調用getServletRequest()。我只是試圖根據CXF JAX-RS文檔中的示例啓動並運行AOP。我究竟做錯了什麼?

回答

0

你只需要在你的資源類實現一些簡單的接口與方法

@Context 無效setMessageContext(MessageContext的MC){}

這將使CXF SpringAOPHelper發現的方法