Session Servletrequest返回空会话

Session Servletrequest返回空会话,session,jakarta-ee,servlets,glassfish-4,java-ee-7,Session,Jakarta Ee,Servlets,Glassfish 4,Java Ee 7,我遇到了一个奇怪的错误,请求中的会话有时为空。代码如下所示: @Stateless @Path("/login") public class GetLogin { @Context private HttpServletRequest httpRequest; @POST @Produces(MediaType.APPLICATION_JSON) public Response login(){ final HttpSessio

我遇到了一个奇怪的错误,请求中的会话有时为空。代码如下所示:

@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异常。为什么呢?我能做些什么来阻止这一切吗?我可以一遍又一遍地重复完全相同的调用,它会随机创建null指针异常,而其他时候它工作得很好。我尝试过各种方法,方法都在等待它准备好,等等。我学到的是,如果它不立即准备好,它永远不会准备好

请求上的get cookies方法有时也会失败,这很容易通过将cookies作为函数中的参数来解决。而且,我似乎可以通过告诉前端重复调用来绕过这个问题。如果第一个调用失败,那么由于某种原因,第二个调用总是成功的。但这感觉像是一个肮脏的解决方案,所以我真的想解决这个问题

有什么想法吗


编辑:显然,如果我让它失败,它每隔一次就会失败,但是如果我处理它,使servlet不会崩溃,它会连续失败4次,然后成功一次。我在一个新安装上尝试过这样做,我使用了标准的netbeans示例rest webapp,只是在其中添加了HttpRequest,然后打印出会话id。如果有人使用了它,请告诉我如何…

是的,你是对的,我在glassfish 3上尝试了完全相同的代码,然后它就完美地工作了。我会看看是否有任何更新的glassfish 4修复了这个问题,否则我会降级。否则你应该发布错误报告