我是Java新手,并尝试使用Jersey框架将Nest js状态代码之一转换为Java应用程序,
First thing I did was, create a db connection pool in a ServletContextListener
然后,我创建了@Post()方法并实现了登录过程,
看起来像这样
@POST
@Path("/login")
@Consumes(APPLICATION_FORM_URLENCODED)
public Response login(@FormParam("username") String login, @FormParam("password") String password) {
try {
Connection conn = (Connection) context.getAttribute("pool");
UserAccount user = DBUtils.findUser(conn, login, password);
if (user == null) {
HashMap<String, String> err = new HashMap<String, String>();
err.put("message", "Invalid user");
return Response.status(404).entity(err).build();
}
// TODO - get JWT token
return Response.status(200).entity(user).build();
} catch (Exception e) {
return Response.status(500).build();
}
}
然后,我用Postman测试了该路线,并且首次接收响应需要10秒钟以上。
但是在首先要求其正常工作之后。由于我是Java EE的新手,所以我真的无法弄清楚可能是什么问题。
为什么在第一次请求中只花更长的时间?即使在服务器启动时也会创建数据库连接,所以发送请求后发生的唯一事情就是创建新线程并执行代码(我认为)。
Then I though maybe DBUtils.findUser(conn, login, password);
take longer time for some reason. I remove that part and tested again but still it takes more than 10 seconds to receive the first request.
这可能是什么问题?