我正在用Jakarta EE创建Quarkus Web应用程序.我有一些@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地址?我try 使用HttpServletRequest,但出现依赖性编译错误. 注意:这仅用于@GET@POST方法,因此总是有一个HTTP请求.

推荐答案

我已经弄清楚了,您不能使用HttpServletRequest来实现这个目标,因为存在依赖性错误.您只需使用IP抓取外部REST API并从拦截器中调用它,因为从拦截器中调用方法与从JAX-RS资源方法中调用它相同.

Java相关问答推荐

Java -使用空比较或instanceof?

Gmail Javi API批量处理太多请求

查找最大子数组的和

Java中后期绑定的替代概念

如何调用Firebase Realtime Database中的子图像列表到android studio中的回收器视图?

Character::Emoji不支持带数字的字符吗?

Java中如何根据Font.canDisplay方法对字符串进行分段

放气总是压缩整个街区吗?

具有阻塞方法的开源库是否应该为执行提供异步选项?

Log4j与jdk21兼容吗?

如何只修改父类ChroniclerView位置0处的第一个嵌套ChroniclerView(child)元素?

由于在生成器模式中使用泛型,lambda表达式中的返回类型错误

为什么StandardOpenOption.CREATE不能通过Ubuntu在中小企业上运行?

我可以在@Cacheable中使用枚举吗

JFree Chart从图表中删除边框

在应用getCellFormula()时,Excel引用中的文件名始终为";[1]";使用Apache POI()

没有Tomcat,IntelliJ如何在本地运行API?

为什么Spring要更改Java版本配置以及如何正确设置?

获取月份';s在java中非UTC时区的开始时间和结束时间

窗口启动后不久,从java.awt.Graphics disapear创建的矩形