org.atmosphere.cpr
Class AtmosphereServlet

java.lang.Object
  extended by javax.servlet.GenericServlet
      extended by javax.servlet.http.HttpServlet
          extended by weblogic.servlet.http.AbstractAsyncServlet
              extended by org.atmosphere.cpr.AtmosphereServlet
All Implemented Interfaces:
Serializable, Servlet, ServletConfig, org.apache.catalina.CometProcessor, org.jboss.servlet.http.HttpEventServlet

public class AtmosphereServlet
extends weblogic.servlet.http.AbstractAsyncServlet
implements org.apache.catalina.CometProcessor, org.jboss.servlet.http.HttpEventServlet

The AtmosphereServlet acts as a dispatcher for AtmosphereHandler defined in META-INF/atmosphere.xml, or if atmosphere.xml is missing, all classes that implements AtmosphereHandler will be discovered and mapped using the class's name. This Servlet can be defined inside an application's web.xml using the following:


    <servlet>
        <description>AtmosphereServlet</description>
        <servlet-name>AtmosphereServlet</servlet-name>
        <servlet-class>org.atmosphere.cpr.AtmosphereServlet</servlet-class>
        <load-on-startup>0 </load-on-startup>
    </servlet>
    <servlet-mapping>
         <servlet-name>AtmosphereServlet</servlet-name>
         <url-pattern>/Atmosphere </url-pattern>
    </servlet-mapping>
 

Author:
Jeanfrancois Arcand
See Also:
Serialized Form

Nested Class Summary
static class AtmosphereServlet.Action
          Simple class/struck that hold the current state.
 class AtmosphereServlet.AtmosphereConfig
           
static class AtmosphereServlet.AtmosphereHandlerWrapper
           
 
Field Summary
protected  Map<String,AtmosphereServlet.AtmosphereHandlerWrapper> atmosphereHandlers
          The list of AtmosphereHandler and their associated mapping.
protected  CometSupport cometSupport
           
protected  AtmosphereServlet.AtmosphereConfig config
           
static String GLASSFISH_V2
           
static String GLASSFISH_V3
           
static String GRIZZLY
           
static String JBOSS_5
           
static String JBOSSWEB
           
static String JETTY
           
static String JETTY_7
           
static Logger logger
           
static String SERVLET_30
           
static String TOMCAT
           
static String WEBLOGIC
           
 
Constructor Summary
AtmosphereServlet()
          Create an Atmosphere Servlet.
AtmosphereServlet(boolean isFilter)
          Create an Atmosphere Servlet.
 
Method Summary
 void addAtmosphereHandler(String mapping, AtmosphereHandler h)
          Add an AtmosphereHandler serviced by the Servlet This API is exposed to allow embedding an Atmosphere application.
protected  void autoDetectAtmosphereHandlers(ServletContext sc, URLClassLoader c)
          Auto detect instance of AtmosphereHandler in case META-INF/atmosphere.xml is missing.
protected  void autoDetectContainer()
          Auto detect the underlying Servlet Container we are running on.
 void destroy()
           
 void doDelete(HttpServletRequest req, HttpServletResponse res)
          Delegate the request processing to an instance of CometSupport
 void doGet(HttpServletRequest req, HttpServletResponse res)
          Delegate the request processing to an instance of CometSupport
 void doHead(HttpServletRequest req, HttpServletResponse res)
          Delegate the request processing to an instance of CometSupport
 void doOptions(HttpServletRequest req, HttpServletResponse res)
          Delegate the request processing to an instance of CometSupport
 void doPost(HttpServletRequest req, HttpServletResponse res)
          Delegate the request processing to an instance of CometSupport
 void doPut(HttpServletRequest req, HttpServletResponse res)
          Delegate the request processing to an instance of CometSupport
protected  boolean doRequest(weblogic.servlet.http.RequestResponseKey rrk)
          Weblogic specific comet based implementation.
protected  void doResponse(weblogic.servlet.http.RequestResponseKey rrk, Object context)
          Weblogic specific comet based implementation.
protected  void doTimeout(weblogic.servlet.http.RequestResponseKey rrk)
          Weblogic specific comet based implementation.
 void doTrace(HttpServletRequest req, HttpServletResponse res)
          Delegate the request processing to an instance of CometSupport
 void event(org.apache.catalina.CometEvent cometEvent)
          Hack to support Tomcat AIO like other WebServer.
 void event(org.jboss.servlet.http.HttpEvent httpEvent)
          Hack to support JBossWeb AIO like other WebServer.
 CometSupport getCometSupport()
          Return the current CometSupport
 String getDefaultBroadcasterClassName()
          Return the default Broadcaster class name.
 void init(ServletConfig sc)
          Load the AtmosphereHandler associated with this AtmosphereServlet.
protected  void loadAtmosphereDotXml(InputStream stream, URLClassLoader c)
          Load AtmosphereHandler defined under META-INF/atmosphere.xml
 void setCometSupport(CometSupport cometSupport)
          Set the CometSupport implementation.
 void setDefaultBroadcasterClassName(String broadcasterClassName)
          Set the default Broadcaster class name
 
Methods inherited from class weblogic.servlet.http.AbstractAsyncServlet
notify
 
Methods inherited from class javax.servlet.http.HttpServlet
getLastModified, service, service
 
Methods inherited from class javax.servlet.GenericServlet
getInitParameter, getInitParameterNames, getServletConfig, getServletContext, getServletInfo, getServletName, init, log, log
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface javax.servlet.Servlet
getServletConfig, getServletInfo, service
 

Field Detail

SERVLET_30

public static final String SERVLET_30
See Also:
Constant Field Values

GLASSFISH_V2

public static final String GLASSFISH_V2
See Also:
Constant Field Values

TOMCAT

public static final String TOMCAT
See Also:
Constant Field Values

JBOSS_5

public static final String JBOSS_5
See Also:
Constant Field Values

JETTY

public static final String JETTY
See Also:
Constant Field Values

JETTY_7

public static final String JETTY_7
See Also:
Constant Field Values

GRIZZLY

public static final String GRIZZLY
See Also:
Constant Field Values

GLASSFISH_V3

public static final String GLASSFISH_V3
See Also:
Constant Field Values

WEBLOGIC

public static final String WEBLOGIC
See Also:
Constant Field Values

JBOSSWEB

public static final String JBOSSWEB
See Also:
Constant Field Values

logger

public static final Logger logger

atmosphereHandlers

protected Map<String,AtmosphereServlet.AtmosphereHandlerWrapper> atmosphereHandlers
The list of AtmosphereHandler and their associated mapping.


cometSupport

protected CometSupport cometSupport

config

protected AtmosphereServlet.AtmosphereConfig config
Constructor Detail

AtmosphereServlet

public AtmosphereServlet()
Create an Atmosphere Servlet.


AtmosphereServlet

public AtmosphereServlet(boolean isFilter)
Create an Atmosphere Servlet.

Method Detail

addAtmosphereHandler

public void addAtmosphereHandler(String mapping,
                                 AtmosphereHandler h)
Add an AtmosphereHandler serviced by the Servlet This API is exposed to allow embedding an Atmosphere application.

Parameters:
The - servlet mapping (servlet path)
an - implementation of an AtmosphereHandler

init

public void init(ServletConfig sc)
          throws ServletException
Load the AtmosphereHandler associated with this AtmosphereServlet.

Specified by:
init in interface Servlet
Overrides:
init in class GenericServlet
Parameters:
sc - the ServletContext
Throws:
ServletException

destroy

public void destroy()
Specified by:
destroy in interface Servlet
Overrides:
destroy in class GenericServlet

loadAtmosphereDotXml

protected void loadAtmosphereDotXml(InputStream stream,
                                    URLClassLoader c)
                             throws IOException
Load AtmosphereHandler defined under META-INF/atmosphere.xml

Throws:
IOException

setCometSupport

public void setCometSupport(CometSupport cometSupport)
Set the CometSupport implementation. Make sure you don't set an implementation that only works on some Container. See BlockingIOCometSupport for an example.

Parameters:
cometSupport -

getCometSupport

public CometSupport getCometSupport()
Return the current CometSupport

Returns:

autoDetectContainer

protected void autoDetectContainer()
Auto detect the underlying Servlet Container we are running on.


autoDetectAtmosphereHandlers

protected void autoDetectAtmosphereHandlers(ServletContext sc,
                                            URLClassLoader c)
                                     throws MalformedURLException,
                                            URISyntaxException
Auto detect instance of AtmosphereHandler in case META-INF/atmosphere.xml is missing.

Parameters:
sc - ServletContext
c - URLClassLoaser to load the class.
Throws:
MalformedURLException
URISyntaxException

doHead

public void doHead(HttpServletRequest req,
                   HttpServletResponse res)
            throws IOException,
                   ServletException
Delegate the request processing to an instance of CometSupport

Overrides:
doHead in class HttpServlet
Parameters:
req - the HttpServletRequest
res - the HttpServletResponse
Throws:
IOException
ServletException

doOptions

public void doOptions(HttpServletRequest req,
                      HttpServletResponse res)
               throws IOException,
                      ServletException
Delegate the request processing to an instance of CometSupport

Overrides:
doOptions in class HttpServlet
Parameters:
req - the HttpServletRequest
res - the HttpServletResponse
Throws:
IOException
ServletException

doTrace

public void doTrace(HttpServletRequest req,
                    HttpServletResponse res)
             throws IOException,
                    ServletException
Delegate the request processing to an instance of CometSupport

Overrides:
doTrace in class HttpServlet
Parameters:
req - the HttpServletRequest
res - the HttpServletResponse
Throws:
IOException
ServletException

doDelete

public void doDelete(HttpServletRequest req,
                     HttpServletResponse res)
              throws IOException,
                     ServletException
Delegate the request processing to an instance of CometSupport

Overrides:
doDelete in class HttpServlet
Parameters:
req - the HttpServletRequest
res - the HttpServletResponse
Throws:
IOException
ServletException

doPut

public void doPut(HttpServletRequest req,
                  HttpServletResponse res)
           throws IOException,
                  ServletException
Delegate the request processing to an instance of CometSupport

Overrides:
doPut in class HttpServlet
Parameters:
req - the HttpServletRequest
res - the HttpServletResponse
Throws:
IOException
ServletException

doGet

public void doGet(HttpServletRequest req,
                  HttpServletResponse res)
           throws IOException,
                  ServletException
Delegate the request processing to an instance of CometSupport

Overrides:
doGet in class HttpServlet
Parameters:
req - the HttpServletRequest
res - the HttpServletResponse
Throws:
IOException
ServletException

doPost

public void doPost(HttpServletRequest req,
                   HttpServletResponse res)
            throws IOException,
                   ServletException
Delegate the request processing to an instance of CometSupport

Overrides:
doPost in class HttpServlet
Parameters:
req - the HttpServletRequest
res - the HttpServletResponse
Throws:
IOException
ServletException

event

public void event(org.apache.catalina.CometEvent cometEvent)
           throws IOException,
                  ServletException
Hack to support Tomcat AIO like other WebServer. This method is invoked by Tomcat when it detect a Servlet implements the interface CometProcessor without invoking Servlet.service(javax.servlet.ServletRequest, javax.servlet.ServletResponse)

Specified by:
event in interface org.apache.catalina.CometProcessor
Parameters:
cometEvent - the CometEvent
Throws:
IOException
ServletException

event

public void event(org.jboss.servlet.http.HttpEvent httpEvent)
           throws IOException,
                  ServletException
Hack to support JBossWeb AIO like other WebServer. This method is invoked by Tomcat when it detect a Servlet implements the interface HttpEventServlet without invoking Servlet.service(javax.servlet.ServletRequest, javax.servlet.ServletResponse)

Specified by:
event in interface org.jboss.servlet.http.HttpEventServlet
Parameters:
httpEvent - the CometEvent
Throws:
IOException
ServletException

doRequest

protected boolean doRequest(weblogic.servlet.http.RequestResponseKey rrk)
                     throws IOException,
                            ServletException
Weblogic specific comet based implementation.

Specified by:
doRequest in class weblogic.servlet.http.AbstractAsyncServlet
Parameters:
rrk -
Returns:
Throws:
IOException
ServletException

doResponse

protected void doResponse(weblogic.servlet.http.RequestResponseKey rrk,
                          Object context)
                   throws IOException,
                          ServletException
Weblogic specific comet based implementation.

Specified by:
doResponse in class weblogic.servlet.http.AbstractAsyncServlet
Parameters:
rrk -
Throws:
IOException
ServletException

doTimeout

protected void doTimeout(weblogic.servlet.http.RequestResponseKey rrk)
                  throws IOException,
                         ServletException
Weblogic specific comet based implementation.

Specified by:
doTimeout in class weblogic.servlet.http.AbstractAsyncServlet
Parameters:
rrk -
Throws:
IOException
ServletException

getDefaultBroadcasterClassName

public String getDefaultBroadcasterClassName()
Return the default Broadcaster class name.

Returns:
the broadcasterClassName

setDefaultBroadcasterClassName

public void setDefaultBroadcasterClassName(String broadcasterClassName)
Set the default Broadcaster class name

Parameters:
broadcasterClassName - the broadcasterClassName to set


Copyright © 2009 SUN Microsystems. All Rights Reserved.