Http Invoker НЕ вызывает аспекты, которые настроены в конце службы - PullRequest
0 голосов
/ 15 сентября 2011

У меня правильно настроена настройка http invoker и она находится в рабочем состоянии. Для аутентификации я использую AOP, который по существу добавляет бит аутентификации в локальный поток на основе различных критериев (таких как веб-контекст, имя пользователя pwd и т. Д.)

А теперь проблема. Когда звонок получен при завершении службы, моя служба спрашивает о бите аутентификации. После тщательной отладки я понял, что соответствующий аспект никогда не вызывался.

Вот соответствующий код аспекта, который добавляет бит аутентификации в локальный поток.

@Before(value = "execution(public * provision(..))")
public void authenticate(){...}

А вот и метод обслуживания, который вызывается.

public ServiceResponse provision(String xyz, String abc){...}

Если я создаю метод «provision ()», вызываемый при локальной настройке, вызывается аспект. Но когда этот метод вызывается через http-invoker, он не вызывается? Как я могу элегантно обойти эту проблему? (У меня есть одно решение, где я добавляю часть аутентификации в метод provision (), но это мешает моей способности к тестированию и SRP.

1 Ответ

0 голосов
/ 26 октября 2011

Как создается прокси AOP? Это сделано с автоматическим проксированием? Поскольку вы используете HttpInvokerServiceExporter, я предполагаю, что у вас также есть как минимум два контекста: основной контекст для приложения и файл -servlet.xml, в котором указывается экспортер. Это правильно? Возможно, есть проблема, потому что конфигурация AOP в вашем основном контексте не распространяется на дочерний контекст -servlet.xml.

...