2010-06-15 6 views
1

J'essaie de faire fonctionner les services Apache CXF JAX-RS avec Spring AOP. J'ai créé une classe simple d'enregistrement:Services REST Apache CXF avec Spring AOP

public class AOPLogger { 

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

} 

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

Je reçois toujours un NPE dans RestService lorsqu'un appel est fait à une méthode getServletRequest() , qui a:

return messageContext.getHttpServletRequest(); 

Si je supprime la configuration ou un commentaire aop dehors de mon beans.xml, tout fonctionne très bien. Tous mes services de repos étendent test.rest.RestService (qui est une classe) et appellent getServletRequest(). J'essaie juste de faire fonctionner l'AOP en me basant sur l'exemple de la documentation de CXF JAX-RS. Qu'est-ce que je fais mal?

Répondre

0

Vous avez juste besoin d'avoir votre classe de ressources mise en œuvre une interface simple avec une méthode

@Context de setMessageContext void (MessageContext mc) {}

cela permettra au CXF SpringAOPHelper de découvrir la méthode

Questions connexes