Как отключить AspectJ без перезапуска программы? - PullRequest
3 голосов
/ 15 июля 2010

У меня есть приложение, использующее AspectJ с ткачеством времени загрузки, чтобы посоветовать различные методы.Я хотел бы включить переключатель в моей программе, чтобы отключить аспект без необходимости изменения исходного кода или перезапуска программы.При выключении он должен быть как можно меньше.Спасибо!

1 Ответ

4 голосов
/ 15 июля 2010

Насколько мне известно, нет способа un сплетать некоторые советы из байт-кода.Если вы работаете с существующим фрагментом расширенного байт-кода, я не верю, что есть какой-либо способ удалить его, кроме перезапуска приложения без сотки *.

Если вы говорите о настройке так,они могут быть удалены - это может быть правдой, что сотка не может быть удалена , но вы, безусловно, можете добавить глобальную if (useWeavedCode) проверку для всего этого и, конечно, добавить эту переменную, а также методыизменить его соответствующим образом (открыть через JMX, новую консольную команду, новую страницу администратора JSP и т. д.).Затем, если вы хотите предотвратить это новое поведение, вы можете отключить его с помощью этой новой опции.

Обратите внимание, конечно, что это на самом деле не удаляет код и требует затрат на поиск логического параметра, пока он отключен., но я не думаю, что это можно сделать лучше.

* Строго вам нужно снова загрузить класс, поэтому вам не нужно перезапускать приложение, но на практике это, вероятно,самый простой вариант, доступный вам, если вы ранее не вставляли хуки в загрузчики классов.

...