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

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

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

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

1 ответ

Решение

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

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

Другие вопросы по тегам