Package org.xlightweb

Source Code of org.xlightweb.JettyContinuationExample$ForeverFrameJettyServlet

/*
*  Copyright (c) xlightweb.org, 2008 - 2009. All rights reserved.
*
*  This library is free software; you can redistribute it and/or
*  modify it under the terms of the GNU Lesser General Public
*  License as published by the Free Software Foundation; either
*  version 2.1 of the License, or (at your option) any later version.
*
*  This library is distributed in the hope that it will be useful,
*  but WITHOUT ANY WARRANTY; without even the implied warranty of
*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
*  Lesser General Public License for more details.
*
*  You should have received a copy of the GNU Lesser General Public
*  License along with this library; if not, write to the Free Software
*  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*
* Please refer to the LGPL license at: http://www.gnu.org/copyleft/lesser.txt
* The latest copy of this software may be found on http://www.xlightweb.org/
*/
package org.xlightweb;


import java.io.IOException;
import java.util.Date;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.mortbay.jetty.Server;
import org.mortbay.jetty.nio.SelectChannelConnector;
import org.mortbay.jetty.servlet.Context;
import org.mortbay.jetty.servlet.ServletHolder;
import org.mortbay.util.ajax.Continuation;
import org.mortbay.util.ajax.ContinuationSupport;


/**
*
* @author grro
*/
public class JettyContinuationExample  {

    public static void main(String[] args) throws Exception {
       
        Server server = new Server();

        SelectChannelConnector connector = new SelectChannelConnector();
        connector.setPort(9966);
        server.addConnector(connector);
       
        Context rootCtx = new Context(server, "");
        ServletHolder servletHolder = new ServletHolder(new ForeverFrameJettyServlet());
        rootCtx.addServlet(servletHolder, "/*");
        server.start();
       
       
    }
   
   
    public static class ForeverFrameJettyServlet extends HttpServlet {

        public void service(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        
           // handle the time request
           if (req.getRequestURI().endsWith("/time")) {
                            
              // get the jetty continuation
              Continuation cc = ContinuationSupport.getContinuation(req, null);
           
              // set the header
              resp.setContentType("text/html");
                                
              // write time periodically
              while (true) {
                 cc.suspend(1000); // suspend the response
                 String script = "<script>\r\n" +
                                 "  parent.printTime(\"" + new Date() + "\");\r\n" +
                                 "</script>";
                 resp.getWriter().println(script);
                 resp.getWriter().flush();
              }
           }

           // ...      
        }
     }

}
TOP

Related Classes of org.xlightweb.JettyContinuationExample$ForeverFrameJettyServlet

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.