org.atmosphere.nettosphere
Class HttpStaticFileServerHandler

java.lang.Object
  extended by org.jboss.netty.channel.SimpleChannelUpstreamHandler
      extended by org.atmosphere.nettosphere.HttpStaticFileServerHandler
All Implemented Interfaces:
org.jboss.netty.channel.ChannelHandler, org.jboss.netty.channel.ChannelUpstreamHandler
Direct Known Subclasses:
BridgeRuntime

public class HttpStaticFileServerHandler
extends org.jboss.netty.channel.SimpleChannelUpstreamHandler

A simple handler that serves incoming HTTP requests to send their respective HTTP responses. It also implements 'If-Modified-Since' header to take advantage of browser cache, as described in RFC 2616.

How Browser Caching Works

Web browser caching works with HTTP headers as illustrated by the following sample:

  1. Request #1 returns the content of /file1.txt.
  2. Contents of /file1.txt is cached by the browser.
  3. Request #2 for /file1.txt does return the contents of the file again. Rather, a 304 Not Modified is returned. This tells the browser to use the contents stored in its cache.
  4. The server knows the file has not been modified because the If-Modified-Since date is the same as the file's last modified date.

 Request #1 Headers
 ===================
 GET /file1.txt HTTP/1.1

 Response #1 Headers
 ===================
 HTTP/1.1 200 OK
 Date:               Tue, 01 Mar 2011 22:44:26 GMT
 Last-Modified:      Wed, 30 Jun 2010 21:36:48 GMT
 Expires:            Tue, 01 Mar 2013 22:44:26 GMT
 Cache-Control:      private, max-age=31536000

 Request #2 Headers
 ===================
 GET /file1.txt HTTP/1.1
 If-Modified-Since:  Wed, 30 Jun 2010 21:36:48 GMT

 Response #2 Headers
 ===================
 HTTP/1.1 304 Not Modified
 Date:               Tue, 01 Mar 2011 22:44:28 GMT

 


Nested Class Summary
 
Nested classes/interfaces inherited from interface org.jboss.netty.channel.ChannelHandler
org.jboss.netty.channel.ChannelHandler.Sharable
 
Field Summary
static int HTTP_CACHE_SECONDS
           
static String HTTP_DATE_FORMAT
           
static String HTTP_DATE_GMT_TIMEZONE
           
static String SERVICED
           
static String STATIC_MAPPING
           
 
Constructor Summary
HttpStaticFileServerHandler(List<String> paths)
           
 
Method Summary
protected  void contentType(org.jboss.netty.handler.codec.http.HttpRequest request, org.jboss.netty.handler.codec.http.HttpResponse response, File resource)
           
 void exceptionCaught(org.jboss.netty.channel.ChannelHandlerContext ctx, org.jboss.netty.channel.ExceptionEvent e)
           
 void messageReceived(org.jboss.netty.channel.ChannelHandlerContext ctx, org.jboss.netty.channel.MessageEvent e)
           
protected  String sanitizeUri(String uri)
           
protected  void sendError(org.jboss.netty.channel.ChannelHandlerContext ctx, org.jboss.netty.handler.codec.http.HttpResponseStatus status, org.jboss.netty.channel.MessageEvent event)
           
 
Methods inherited from class org.jboss.netty.channel.SimpleChannelUpstreamHandler
channelBound, channelClosed, channelConnected, channelDisconnected, channelInterestChanged, channelOpen, channelUnbound, childChannelClosed, childChannelOpen, handleUpstream, writeComplete
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

HTTP_DATE_FORMAT

public static final String HTTP_DATE_FORMAT
See Also:
Constant Field Values

HTTP_DATE_GMT_TIMEZONE

public static final String HTTP_DATE_GMT_TIMEZONE
See Also:
Constant Field Values

HTTP_CACHE_SECONDS

public static final int HTTP_CACHE_SECONDS
See Also:
Constant Field Values

STATIC_MAPPING

public static final String STATIC_MAPPING

SERVICED

public static final String SERVICED
Constructor Detail

HttpStaticFileServerHandler

public HttpStaticFileServerHandler(List<String> paths)
Method Detail

messageReceived

public void messageReceived(org.jboss.netty.channel.ChannelHandlerContext ctx,
                            org.jboss.netty.channel.MessageEvent e)
                     throws Exception
Overrides:
messageReceived in class org.jboss.netty.channel.SimpleChannelUpstreamHandler
Throws:
Exception

exceptionCaught

public void exceptionCaught(org.jboss.netty.channel.ChannelHandlerContext ctx,
                            org.jboss.netty.channel.ExceptionEvent e)
                     throws Exception
Overrides:
exceptionCaught in class org.jboss.netty.channel.SimpleChannelUpstreamHandler
Throws:
Exception

sanitizeUri

protected String sanitizeUri(String uri)

sendError

protected void sendError(org.jboss.netty.channel.ChannelHandlerContext ctx,
                         org.jboss.netty.handler.codec.http.HttpResponseStatus status,
                         org.jboss.netty.channel.MessageEvent event)

contentType

protected void contentType(org.jboss.netty.handler.codec.http.HttpRequest request,
                           org.jboss.netty.handler.codec.http.HttpResponse response,
                           File resource)


Copyright © 2014. All Rights Reserved.