Получение IP-адреса внутри перехватчика

Я создаю веб-приложение Quarkus с помощью Jakarta EE. У меня есть методы @GET и @POST, и я хочу зарегистрировать их использование. Для этого я использую такой перехватчик:

@Loggable
@Interceptor
@Priority(1)
public class Logger {
    
    @Inject
    private LogService logService;
    
    @AroundInvoke
    public Object logMethodEntry(InvocationContext context) throws Exception {
        Date currentDateAndTime = new Date();
        SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
        String dateAndTime = dateFormat.format(currentDateAndTime);
        String methodName = context.getTarget().getClass().getName() + "." + context.getMethod().getName();
        String ipAddress = "";


        Log log = new Log(dateAndTime, ipAddress, methodName);
        logService.addLog(log);
        return context.proceed();
    }
}

Этот перехватчик использует @Loggable для регистрации в целевом классе. Мой вопрос: как я могу получить IP-адрес клиента? Я пробовал использовать HttpServletRequest, но получаю ошибки компиляции зависимостей. ПРИМЕЧАНИЕ. Это используется только в методах @GET и @POST, поэтому всегда существует HTTP-запрос.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
67
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я разобрался, для этого нельзя использовать HttpServletRequest, так как есть ошибки зависимостей. Вы можете просто использовать внешний REST API для захвата IP и вызвать его из перехватчика, поскольку вызов метода из перехватчика аналогичен вызову его из метода ресурса JAX-RS.

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