Apache CXF REST Services со Spring AOP - PullRequest
1 голос
/ 15 июня 2010

Я пытаюсь заставить службы Apache CXF JAX-RS работать с Spring AOP.Я создал простой класс ведения журнала:

public class AOPLogger {

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

}

Моя конфигурация 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"/>

Я всегда получаю NPE в RestService, когда выполняется вызовМетод getServletRequest (), который имеет:

return messageContext.getHttpServletRequest();

Если я удаляю конфигурацию aop или закомментирую ее из файла beans.xml, все работает нормально.

Все мои действительные службы Rest расширяютсяtest.rest.RestService (который является классом) и вызовите getServletRequest ().Я просто пытаюсь запустить AOP на основе примера, приведенного в документации CXF JAX-RS.Что я делаю не так?

1 Ответ

0 голосов
/ 24 июня 2010

Вам просто нужно, чтобы ваш класс ресурсов реализовывал простой интерфейс с методом

@ Контекст void setMessageContext (MessageContext mc) {}

это позволит CXF SpringAOPHelper обнаружить метод

...