我收到一个奇怪的错误,我从请求中获得的会话有时为null。代码如下所示:
@Stateless
@Path("/login")
public class GetLogin {
@Context
private HttpServletRequest httpRequest;
@POST
@Produces(MediaType.APPLICATION_JSON)
public Response login(){
final HttpSession session = httpRequest.getSession(true);
sessionId = session.getId();//Sometimes gives nullpointer Exceptions
.....//Rest works fine if that step holds
当我打电话来获取会话ID时,我有时会得到一个nullpointer异常。这是为什么?有什么办法可以阻止吗?我可以一遍又一遍地重复完全相同的调用,它会随机创建nullpointer异常,因为其他时候它工作得很好。我尝试过这种方式,方法等待它准备好等等。我学到的是,如果它没有立即准备,它将永远不会准备好。
请求中的get cookie方法偶尔会失败,因为只需将cookie作为函数中的参数即可解决。此外,似乎我可以通过告诉前端重复呼叫,如果第一个失败,第二个呼叫总是成功然后由于某种原因来解决这个问题。但这感觉就像一个肮脏的解决方案,所以我真的想解决这个问题......
有什么想法吗?
编辑:显然如果我让它失败它会每隔一段时间失败,但如果我处理它以便servlet不崩溃它连续失败4次然后成功一次。我尝试在全新安装时执行此操作,我使用标准netbeans示例rest webapp并将HttpRequest添加到其中,然后打印出会话ID。如果有人让这个工作,请告诉我如何......