Отключить/включить перехватчик во время выполнения

У меня есть несколько перехватчиков, которые используются для отладки (производительность, регистрация использования методов и т. д.) наших приложений JavaEE.

В производственной системе я не хочу, чтобы эти перехватчики были включены по умолчанию, но я хочу иметь возможность включать их во время выполнения (= без повторного развертывания). Есть ли какой-либо портативный способ сделать это независимо от реализации CDI? Если нет, есть ли какой-то особый способ WELD для этого?

Моим единственным решением был бы глобальный флаг, который должен использоваться этими перехватчиками, но который по-прежнему имеет накладные расходы на ввод перехватчика и оценку флага просто так.


person grubi    schedule 23.02.2017    source источник


Ответы (1)


Это одна из вещей, которые CDI/Weld делают при начальной загрузке. Например. для перехватчика вам фактически нужно создать «обертывающий прокси», который будет обрабатывать любую дополнительную работу, которую вы выполняете над перехватчиком. Следовательно, ответ - нет, вы не можете сделать это во время выполнения.

Тем не менее, ваш подход с видом флага совершенно прекрасен. Накладные расходы на наличие прокси-перехватчика (который ничего не делает) действительно настолько малы, что вы не должны их замечать. Я бы, наверное, пошел с этим подходом.

person Siliarus    schedule 23.02.2017
comment
Хорошо, тогда я буду использовать свое первоначальное решение. Спасибо. - person grubi; 23.02.2017