GWT Spring Integration - Как вести лог AOP? - PullRequest
2 голосов
/ 29 августа 2010

У меня есть приложение GWT, в котором его службы RPC обрабатываются компонентом GWTHandler, чтобы оно могло плавно интегрироваться с Spring.Приложение работает.Нет проблем с этим.

Моя проблема в том, что я не могу вести AOP с Spring.Мне нравится регистрировать действия пользователя из интерфейса GWT, используя AOP.(Конечно, я мог бы сделать это старым способом вызова службы RPC для каждого действия, которое делает пользователь, и записать это действие в журнал, но это не путь AOP).Я должен сделать это в АОП, потому что это требования клиента.

Я попытался использовать обычную Spring AOP с общим шаблоном pointcut «execute (* . (..))».Он способен захватывать все методы, кроме сервисов GWT.Другими словами, это бесполезно.Конечно, я мог бы зарегистрировать бэкэнд Spring DAO, используя AOP, но как мне узнать, из какой службы RPC он пришел?Эти DAO используются многочисленными классами и методами (не только для GWT).

Я пытался исследовать пакет GWT-ENT.Выглядит хорошо.Однако, это работает на стороне клиента, и ваши классы должны реализовать Aspectable.Это означает необходимость внесения изменений во все клиентские классы в моем приложении GWT.Кроме того, вы не можете использовать закрытые методы, поскольку для обработки AOP с помощью GWT-ENT вам нужно создавать свои классы с помощью GWT.create вместо new ().Наличие закрытых методов приводит к ошибке.Я установил простое приложение, и действительно частные методы не работают.

Я попытался найти пакет GWT-SL (откуда пришел мой GWTHandler).Они упомянули кое-что об АОП, но информации очень мало.Google не дал мне никаких решений или примеров.

Я перепробовал все, что мог, и искал в Google всеми моими усилиями, но не могу найти решение своей проблемы.

Все, что я хочу сделать, - это протоколировать методы из моегоУслуги GWT через АОП.Допустим, клиент переходит на вкладку «Отчет».Затем он нажимает кнопку «Удалить запись».Я хочу регистрировать эту активность через АОП.

Я использую GWT (со SmartGWT) и Spring / Hibernate.

Ответы [ 2 ]

0 голосов
/ 01 сентября 2010

Я собираюсь ответить на мой вопрос.

Вместо ведения журнала AOP на реализациях сервера GWT (что теоретически должно работать, но на практике это не так), я решил сделать запись AOP на уровне DAO.Просто убедитесь, что вы регистрируете DAO, а не Hibernate Session

0 голосов
/ 30 августа 2010

Spring AOP будет рекомендовать только открытые методы bean-компонентов в контексте Spring, поэтому инфраструктура GWT недоступна, если вы специально не создадите ее экземпляр через контейнер Spring.

Вы можете использовать ткачество во время компиляции с AspectJ, чтобы связать свой AOP со всем, но это может быть немного грязно. Также не ясно, сработает ли это, если вы не компилируете классы GWT, о которых идет речь.

...