拍卖servlet - 这是一个java servlet,在第一个用户发出请求后等待2-3分钟。所以我需要跟踪我的servlet中的时间。 所以当时间结束使用某些逻辑时,它会向某些用户发送响应...
示例: 假设我的10个用户正在向我的拍卖servlet发送请求,我想检查一下,自第一个用户提出请求以来已经过了2-3分钟
当时间结束时,使用一些逻辑我想在2-3分钟后向我的一些用户发送响应。
我曾尝试在HTTpServelt中使用TimerTask但是出现拒绝访问错误。
答案 0 :(得分:0)
您的问题不明确。您可能无法完全理解Java Servlet技术的工作原理。
Servlet是一个在客户端(Web浏览器等)第一次请求时加载或在servlet container启动时预加载的类。分配一个线程来处理每个传入请求以生成传出响应。通常, servlet对象在启动后不会停止运行,直到servlet容器关闭。您必须了解单个servlet对象servlet可以处理许多用户的许多请求 - 响应周期。查看更多discussion here。
为每个用户的请求 - 响应周期集启动会话。每个会话由HttpSession对象表示。如果用户停止发出请求,会话将自动超时。实施通常默认为半小时,直到超时。您可以调整该默认值。这可能是您正在寻找的解决方案,但我不确定您的问题是否缺乏明确性。在该会话对象上调用setMaxInactiveInterval
。
int seconds = TimeUnit.MINUTES.toSeconds( 3 ) ; // Three minutes converted to a number of seconds.
someHttpSession.setMaxInactiveInterval( seconds );
此外,您可以通过调用该会话对象上的invalidate
以discussed here编程方式关闭会话。
您可以通过调用getCreationTime
,将该会话的开始时间作为自1970年UTC世纪以来的毫秒计数。
long millisSinceEpoch = someHttpSession.getCreationTime();
从中获取Instant
以查看UTC中的那一刻。
Instant instantSessionStarted = Instant.ofEpochMilli( millisSinceEpoch );
使用Duration
对象查看已用时间。目前,请致电Instant.now
。
Duration durationOfThisSession = Duration.between( instantSessionStarted , Instant.now() );