大气无法在Glassfish 3.1.2上获得会话 [英] Atmosphere can't get session on Glassfish 3.1.2

查看:157
本文介绍了大气无法在Glassfish 3.1.2上获得会话的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我从Atmosphere获得了聊天示例,现在我想获得会话,但我得到一个空指针异常。我的配置:


  • GlassFish 3.1.2

  • 氛围1.0.0-SNAPSHOT



  • My ChatAtmosphereHandler.java文件:

      @覆盖
    public void onRequest(AtmosphereResource r)抛出IOException {

    AtmosphereRequest req = r.getRequest();

    //首先,告诉Atmosphere允许通过暂停进行双向通信。
    if(req.getMethod()。equalsIgnoreCase(GET)){

    / * -------由我添加的行------- * /
    double i = Math.random();
    System.out.println(i);
    req.getSession(true).setAttribute(user,i); //空指针异常
    / * --------------------------------- * /
    //样本只需要协商标题来列出所有支持的传输。
    if(req.getHeader(negotiating)== null){
    r.suspend();
    } else {
    r.getResponse()。getWriter()。write(OK);
    }
    //其次,广播信息给所有连接的用户。
    } else if(req.getMethod()。equalsIgnoreCase(POST)){
    r.getBroadcaster()。broadcast(req.getReader()。readLine()。trim());


    和异常堆栈跟踪:

      INFO:18:07:19.816 [http-thread-pool-8080(4)] WARN oawebsocket.WebSocketProcessor  - 调用AtmosphereFramework.doCometSupport失败)
    java.lang.NullPointerException:null
    at com.sun.grizzly.tcp.http11.GrizzlyRequest.doGetSession(GrizzlyRequest.java:2271)〜[grizzly-utils.jar:1.9.46]
    at com.sun.grizzly.tcp.http11.GrizzlyRequest.getSession(GrizzlyRequest.java:2226)〜[grizzly-utils.jar:1.9.46]
    at com.sun.grizzly.http.servlet .httpServletRequestImpl.getSession(HttpServletRequestImpl.java:986)〜[grizzly-http-servlet.jar:1.9.46]
    at com.sun.grizzly.http.servlet.HttpServletRequestImpl.getSession(HttpServletRequestImpl.java:1009) 〜[grizzly-http-servlet.jar:1.9.46]
    在org.atmosphere.cpr.AtmosphereRequest.createSession(AtmosphereRequest.java:606)〜[atmosphere-runtime-1.0.0-SNAPSHOT.jar:1.0 .0-SNAPSHOT]
    at org.atmosphere.cpr.Atm osphereRequest.getSession(AtmosphereRequest.java:580)〜[atmosphere-runtime-1.0.0-SNAPSHOT.jar:1.0.0-SNAPSHOT]
    在org.atmosphere.cpr.AtmosphereRequest.getSession(AtmosphereRequest.java:600 )〜[atmosphere-runtime-1.0.0-SNAPSHOT.jar:1.0.0-SNAPSHOT]
    在org.atmosphere.samples.chat.ChatAtmosphereHandler.onRequest(ChatAtmosphereHandler.java:43)〜[ChatAtmosphereHandler.class: na]
    at org.atmosphere.cpr.AsynchronousProcessor.action(AsynchronousProcessor.java:232)〜[atmosphere-runtime-1.0.0-SNAPSHOT.jar:1.0.0-SNAPSHOT]
    at org。 atmosphere.cpr.AsynchronousProcessor.suspended(AsynchronousProcessor.java:165)〜[atmosphere-runtime-1.0.0-SNAPSHOT.jar:1.0.0-SNAPSHOT]
    在org.atmosphere.container.GlassFishWebSocketSupport.service(GlassFishWebSocketSupport .java:111)〜[atmosphere-runtime-1.0.0-SNAPSHOT.jar:1.0.0-SNAPSHOT]
    at org.atmosphere.cpr.AtmosphereFramework.doCometSupport(AtmosphereFramework.java:1125)〜[atmosphere-运行时-1.0.0-SNAPSHOT.jar:1.0.0-SNAP SHOT]
    at org.atmosphere.websocket.WebSocketProcessor.dispatch(WebSocketProcessor.java:183)[atmosphere-runtime-1.0.0-SNAPSHOT.jar:1.0.0-SNAPSHOT]
    at org.atmosphere .websocket.WebSocketProcessor.dispatch(WebSocketProcessor.java:112)[atmosphere-runtime-1.0.0-SNAPSHOT.jar:1.0.0-SNAPSHOT]
    at org.atmosphere.container.GlassFishWebSocketSupport $ GrizzlyApplication.onConnect(GlassFishWebSocketSupport .java:163)[atmosphere-runtime-1.0.0-SNAPSHOT.jar:1.0.0-SNAPSHOT]
    at com.sun.grizzly.websockets.DefaultWebSocket.onConnect(DefaultWebSocket.java:128)[grizzly- websockets.jar:1.9.46]
    at com.sun.grizzly.websockets.WebSocketEngine.upgrade(WebSocketEngine.java:188)[grizzly-websockets.jar:1.9.46]
    at com.sun .grizzly.websockets.WebSocketAsyncFilter.doFilter(WebSocketAsyncFilter.java:54)[grizzly-websockets.jar:1.9.46]
    at com.sun.grizzly.arp.DefaultAsyncExecutor.invokeFilters(DefaultAsyncExecutor.java:171)[ grizzly-http.jar:1.9.46]
    at com.sun.grizzly.arp.DefaultAsyncExecutor.interrupt(DefaultAsyncExecutor.java:143)[grizzly-http.jar:1.9.46]
    at com.sun.grizzly.arp.AsyncProcessorTask.doTask(AsyncProcessorTask.java: 102)[grizzly-http.jar:1.9.46]
    at com.sun.grizzly.http.TaskBase.run(TaskBase.java:193)[grizzly-http.jar:1.9.46]
    在com.sun.grizzly.http.TaskBase.execute(TaskBase.java:175)[grizzly-http.jar:1.9.46]
    at com.sun.grizzly.arp.DefaultAsyncHandler.handle(DefaultAsyncHandler。 java:145)[grizzly-http.jar:1.9.46]
    at com.sun.grizzly.arp.AsyncProtocolFilter.execute(AsyncProtocolFilter.java:210)[grizzly-http.jar:1.9.46]
    at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)[grizzly-framework.jar:1.9.46]
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java: 104)[grizzly-framework.jar:1.9.46]
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)[grizzly-framework.jar: 1.9.46]
    at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)[grizzly-http.jar:1.9.46]
    at com.sun.grizzly.ProtocolChainContextTask .doCall(ProtocolChainContextTask.java:54)[grizzly-framework.jar:1.9.46]
    at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)[grizzly-framework.jar:1.9。 46]
    at com.sun.grizzly.ContextTask.run(ContextTask.java:71)[grizzly-framework.jar:1.9.46]
    at com.sun.grizzly.util.AbstractThreadPool $ Worker .doWork(AbstractThreadPool.java:532)[grizzly-utils.jar:1.9.46]
    at com.sun.grizzly.util.AbstractThreadPool $ Worker.run(AbstractThreadPool.java:513)[grizzly-utils。 jar:1.9.46]
    at java.lang.Thread.run(Thread.java:722)[na:1.7.0_03]


    解决方案

    此后会话处理代码已被修改。请使用最新的主码重试。


    I got the chat example working from Atmosphere, and now I want to get the session, but I get a null pointer exception. My configuration:

    • GlassFish 3.1.2
    • Atmosphere 1.0.0-SNAPSHOT

    My ChatAtmosphereHandler.java file:

    @Override
    public void onRequest(AtmosphereResource r) throws IOException {
    
        AtmosphereRequest req = r.getRequest();
    
        // First, tell Atmosphere to allow bi-directional communication by suspending.
        if (req.getMethod().equalsIgnoreCase("GET")) {
    
        /* ------- ADDED LINES BY ME ------- */
            double i = Math.random();
            System.out.println(i);
            req.getSession(true).setAttribute("user", i); //Null pointer exception
        /* --------------------------------- */
            // The negotiation header is just needed by the sample to list all the supported transport.
            if (req.getHeader("negotiating") == null) {
                r.suspend();
            } else {
                r.getResponse().getWriter().write("OK");
            }
        // Second, broadcast message to all connected users.
        } else if (req.getMethod().equalsIgnoreCase("POST")) {
            r.getBroadcaster().broadcast(req.getReader().readLine().trim());
        }
    }
    

    And the exception stack trace:

    INFO: 18:07:19.816 [http-thread-pool-8080(4)] WARN  o.a.websocket.WebSocketProcessor - Failed invoking AtmosphereFramework.doCometSupport()
    java.lang.NullPointerException: null
        at com.sun.grizzly.tcp.http11.GrizzlyRequest.doGetSession(GrizzlyRequest.java:2271) ~[grizzly-utils.jar:1.9.46]
        at com.sun.grizzly.tcp.http11.GrizzlyRequest.getSession(GrizzlyRequest.java:2226) ~[grizzly-utils.jar:1.9.46]
        at com.sun.grizzly.http.servlet.HttpServletRequestImpl.getSession(HttpServletRequestImpl.java:986) ~[grizzly-http-servlet.jar:1.9.46]
        at com.sun.grizzly.http.servlet.HttpServletRequestImpl.getSession(HttpServletRequestImpl.java:1009) ~[grizzly-http-servlet.jar:1.9.46]
        at org.atmosphere.cpr.AtmosphereRequest.createSession(AtmosphereRequest.java:606) ~[atmosphere-runtime-1.0.0-SNAPSHOT.jar:1.0.0-SNAPSHOT]
        at org.atmosphere.cpr.AtmosphereRequest.getSession(AtmosphereRequest.java:580) ~[atmosphere-runtime-1.0.0-SNAPSHOT.jar:1.0.0-SNAPSHOT]
        at org.atmosphere.cpr.AtmosphereRequest.getSession(AtmosphereRequest.java:600) ~[atmosphere-runtime-1.0.0-SNAPSHOT.jar:1.0.0-SNAPSHOT]
        at org.atmosphere.samples.chat.ChatAtmosphereHandler.onRequest(ChatAtmosphereHandler.java:43) ~[ChatAtmosphereHandler.class:na]
        at org.atmosphere.cpr.AsynchronousProcessor.action(AsynchronousProcessor.java:232) ~[atmosphere-runtime-1.0.0-SNAPSHOT.jar:1.0.0-SNAPSHOT]
        at org.atmosphere.cpr.AsynchronousProcessor.suspended(AsynchronousProcessor.java:165) ~[atmosphere-runtime-1.0.0-SNAPSHOT.jar:1.0.0-SNAPSHOT]
        at org.atmosphere.container.GlassFishWebSocketSupport.service(GlassFishWebSocketSupport.java:111) ~[atmosphere-runtime-1.0.0-SNAPSHOT.jar:1.0.0-SNAPSHOT]
        at org.atmosphere.cpr.AtmosphereFramework.doCometSupport(AtmosphereFramework.java:1125) ~[atmosphere-runtime-1.0.0-SNAPSHOT.jar:1.0.0-SNAPSHOT]
        at org.atmosphere.websocket.WebSocketProcessor.dispatch(WebSocketProcessor.java:183) [atmosphere-runtime-1.0.0-SNAPSHOT.jar:1.0.0-SNAPSHOT]
        at org.atmosphere.websocket.WebSocketProcessor.dispatch(WebSocketProcessor.java:112) [atmosphere-runtime-1.0.0-SNAPSHOT.jar:1.0.0-SNAPSHOT]
        at org.atmosphere.container.GlassFishWebSocketSupport$GrizzlyApplication.onConnect(GlassFishWebSocketSupport.java:163) [atmosphere-runtime-1.0.0-SNAPSHOT.jar:1.0.0-SNAPSHOT]
        at com.sun.grizzly.websockets.DefaultWebSocket.onConnect(DefaultWebSocket.java:128) [grizzly-websockets.jar:1.9.46]
        at com.sun.grizzly.websockets.WebSocketEngine.upgrade(WebSocketEngine.java:188) [grizzly-websockets.jar:1.9.46]
        at com.sun.grizzly.websockets.WebSocketAsyncFilter.doFilter(WebSocketAsyncFilter.java:54) [grizzly-websockets.jar:1.9.46]
        at com.sun.grizzly.arp.DefaultAsyncExecutor.invokeFilters(DefaultAsyncExecutor.java:171) [grizzly-http.jar:1.9.46]
        at com.sun.grizzly.arp.DefaultAsyncExecutor.interrupt(DefaultAsyncExecutor.java:143) [grizzly-http.jar:1.9.46]
        at com.sun.grizzly.arp.AsyncProcessorTask.doTask(AsyncProcessorTask.java:102) [grizzly-http.jar:1.9.46]
        at com.sun.grizzly.http.TaskBase.run(TaskBase.java:193) [grizzly-http.jar:1.9.46]
        at com.sun.grizzly.http.TaskBase.execute(TaskBase.java:175) [grizzly-http.jar:1.9.46]
        at com.sun.grizzly.arp.DefaultAsyncHandler.handle(DefaultAsyncHandler.java:145) [grizzly-http.jar:1.9.46]
        at com.sun.grizzly.arp.AsyncProtocolFilter.execute(AsyncProtocolFilter.java:210) [grizzly-http.jar:1.9.46]
        at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137) [grizzly-framework.jar:1.9.46]
        at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104) [grizzly-framework.jar:1.9.46]
        at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90) [grizzly-framework.jar:1.9.46]
        at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79) [grizzly-http.jar:1.9.46]
        at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) [grizzly-framework.jar:1.9.46]
        at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59) [grizzly-framework.jar:1.9.46]
        at com.sun.grizzly.ContextTask.run(ContextTask.java:71) [grizzly-framework.jar:1.9.46]
        at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532) [grizzly-utils.jar:1.9.46]
        at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513) [grizzly-utils.jar:1.9.46]
        at java.lang.Thread.run(Thread.java:722) [na:1.7.0_03]
    

    解决方案

    The session handling code has been modified since then. Please try again with the latest master code.

    这篇关于大气无法在Glassfish 3.1.2上获得会话的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆