Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[jetty-users] Jetty Continuations NullPointerException

Hi All,

I'm trying to make a simple Continuations test but I can't get it to work. The objective is simple, flush a "Hello World" string to the client every 2 seconds.
 

import java.lang.Exception;
import java.io.IOException;
import java.io.PrintWriter;
 
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
import org.eclipse.jetty.util.thread.QueuedThreadPool;
import org.eclipse.jetty.continuation.Continuation;
import org.eclipse.jetty.continuation.ContinuationSupport;
 
class Test
{
    public static void main(String[] args) throws Exception
    {
        Server server = new Server(8080);
        ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
        context.setContextPath("/");
        context.addServlet(new ServletHolder(new ContinuationServlet()),"/*");
        server.setHandler(context);
        server.start();
        server.join();
    }
 
    static class ContinuationServlet extends HttpServlet
    {
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException
        {
            Continuation continuation = ContinuationSupport.getContinuation(request);
            response.setContentType("text/html;charset=utf-8");
            response.setStatus(HttpServletResponse.SC_OK);
            PrintWriter writer = response.getWriter();
            writer.println("Hello World");
            writer.flush();
            continuation.setTimeout(2000);
            continuation.suspend();
        }
    }
}
 

The code works up until the servlet tries to prinln the second time, throwing a NullPointerException. Any hint on what I'm doing wrong?
 

[java] java.lang.NullPointerException
     [java] at org.eclipse.jetty.io.BufferUtil.putHexInt(BufferUtil.java:132)
     [java] at org.eclipse.jetty.http.HttpGenerator.prepareBuffers(HttpGenerator.java:994)
     [java] at org.eclipse.jetty.http.HttpGenerator.flushBuffer(HttpGenerator.java:824)
     [java] at org.eclipse.jetty.http.AbstractGenerator.flush(AbstractGenerator.java:452)
     [java] at org.eclipse.jetty.server.HttpOutput.flush(HttpOutput.java:94)
     [java] at org.eclipse.jetty.server.HttpConnection$Output.flush(HttpConnection.java:1009)
     [java] at org.eclipse.jetty.server.HttpWriter.flush(HttpWriter.java:87)
     [java] at org.eclipse.jetty.io.UncheckedPrintWriter.flush(UncheckedPrintWriter.java:152)
     [java] at Test$ContinuationServlet.doGet(Unknown Source)
     [java] at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
     [java] at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
     [java] at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:547)
     [java] at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:480)
     [java] at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:225)
     [java] at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:940)
     [java] at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:409)
     [java] at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:186)
     [java] at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:874)
     [java] at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
     [java] at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:110)
     [java] at org.eclipse.jetty.server.Server.handleAsync(Server.java:390)
     [java] at org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:446)
     [java] at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:49)
     [java] at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:586)
     [java] at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:44)
     [java] at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:598)
     [java] at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:533)
     [java] at java.lang.Thread.run(Thread.java:680)


Regards,

Miguel


Back to the top