Я создаю веб-приложение 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-запрос.




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