## org.mortbay.cometd
Class AbstractCometdServlet

    java.lang.Object
      javax.servlet.GenericServlet
          org.mortbay.cometd.AbstractCometdServlet

All Implemented Interfaces:
  java.io.Serializable, javax.servlet.Servlet, javax.servlet.ServletConfig

Direct Known Subclasses:
  ContinuationCometdServlet

    public abstract class AbstractCometdServlet

extends javax.servlet.GenericServlet

Cometd Filter Servlet implementing the `AbstractBayeux` protocol. The Servlet can be initialized with a json file mapping channels to `DataFilter` definitions. The servlet init parameter "filters" should point to a webapplication resource containing a JSON array of filter definitions. For example:

      [
        {
          "channels": "/**",
          "class"   : "org.mortbay.cometd.filter.NoMarkupFilter",
          "init"    : {}
        }
      ]

The following init parameters can be used to configure the servlet:

timeout
  The server side poll timeout in milliseconds (default 250000). This is how long the server will hold a reconnect request before responding.
interval
  The client side poll timeout in milliseconds (default 0). How long a client will wait between reconnects
maxInterval
  The max client side poll timeout in milliseconds (default 30000). A client will be removed if a connection is not received in this time.
maxLazyLatency
  The max time in ms(default 0) that a client with lazy messages will wait before sending a response. If 0, then the client will wait until the next timeout or non-lazy message.
multiFrameInterval
  the client side poll timeout if multiple connections are detected from the same browser (default 1500).
JSONCommented
  If "true" then the server will accept JSON wrapped in a comment and will generate JSON wrapped in a comment. This is a defence against Ajax Hijacking.
filters
  the location of a JSON file describing `DataFilter` instances to be installed
requestAvailable
  If true, the current request is made available via the `AbstractBayeux.getCurrentRequest()` method
logLevel
  0=none, 1=info, 2=debug
jsonDebug
  If true, JSON complete json input will be kept for debug.
channelIdCacheLimit
  The limit of the `ChannelId` cache: -1 to disable caching, 0 for no limits, any positive value to clear the cache once the limit has been reached
refsThreshold
  The number of message refs at which the a single message response will be cached instead of being generated for every client delivered to. Done to optimize a single message being sent to multiple clients.

Author:
  gregw, aabeling: added JSONP transport
See Also:
  `AbstractBayeux}`, `ChannelId}`, Serialized Form

Field Summary
`static int` `__DEFAULT_REFS_THRESHOLD`
`protected AbstractBayeux` `_bayeux`
`protected boolean` `_jsonDebug`
`protected int` `_refsThreshold`
`static java.lang.String` `BROWSER_ID`
`static java.lang.String` `CLIENT_ATTR`
`static java.lang.String` `HTTP_CLIENT_ID`
`static java.lang.String` `MESSAGE_PARAM`
`static java.lang.String` `TRANSPORT_ATTR`
`static java.lang.String` `TUNNEL_INIT_PARAM`

Constructor Summary
`AbstractCometdServlet()`

Method Summary
`protected java.lang.String` `findBrowserId(javax.servlet.http.HttpServletRequest request)`
`AbstractBayeux` `getBayeux()`
`protected org.cometd.Message[]` `getMessages(javax.servlet.http.HttpServletRequest request)`
`protected org.cometd.Message[]` `handleJSONParseException(javax.servlet.http.HttpServletRequest request, java.lang.String messageString, java.lang.Exception x)` Override to customize the handling of JSON parse exceptions.
`void` `init()`
`protected abstract AbstractBayeux` `newBayeux()`
`protected abstract void` `service(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse resp)`
`void` `service(javax.servlet.ServletRequest req, javax.servlet.ServletResponse resp)`
`protected java.lang.String` `setBrowserId(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)`

Methods inherited from class javax.servlet.GenericServlet
`destroy, 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`

Field Detail

### CLIENT_ATTR

    public static final java.lang.String CLIENT_ATTR

See Also:
  Constant Field Values

### TRANSPORT_ATTR

    public static final java.lang.String TRANSPORT_ATTR

See Also:
  Constant Field Values

### MESSAGE_PARAM

    public static final java.lang.String MESSAGE_PARAM

See Also:
  Constant Field Values

### TUNNEL_INIT_PARAM

    public static final java.lang.String TUNNEL_INIT_PARAM

See Also:
  Constant Field Values

### HTTP_CLIENT_ID

    public static final java.lang.String HTTP_CLIENT_ID

See Also:
  Constant Field Values

### BROWSER_ID

    public static final java.lang.String BROWSER_ID

See Also:
  Constant Field Values

### _bayeux

    protected AbstractBayeux _bayeux

### __DEFAULT_REFS_THRESHOLD

    public static final int __DEFAULT_REFS_THRESHOLD

See Also:
  Constant Field Values

### _refsThreshold

    protected int _refsThreshold

### _jsonDebug

    protected boolean _jsonDebug

Constructor Detail

### AbstractCometdServlet

    public AbstractCometdServlet()

Method Detail

### getBayeux

    public AbstractBayeux getBayeux()

### newBayeux

    protected abstract AbstractBayeux newBayeux()

### init

    public void init()
              throws javax.servlet.ServletException

  Overrides:
    `init` in class `javax.servlet.GenericServlet`
  Throws:
    `javax.servlet.ServletException`

### service

    protected abstract void service(javax.servlet.http.HttpServletRequest req,
                                    javax.servlet.http.HttpServletResponse resp)
                             throws javax.servlet.ServletException,
                                    java.io.IOException

  Throws:
    `javax.servlet.ServletException`
    `java.io.IOException`

### service

    public void service(javax.servlet.ServletRequest req,
                        javax.servlet.ServletResponse resp)
                 throws javax.servlet.ServletException,
                        java.io.IOException

  Specified by:
    `service` in interface `javax.servlet.Servlet`
  Specified by:
    `service` in class `javax.servlet.GenericServlet`
  Throws:
    `javax.servlet.ServletException`
    `java.io.IOException`

### findBrowserId

    protected java.lang.String findBrowserId(javax.servlet.http.HttpServletRequest request)

### setBrowserId

    protected java.lang.String setBrowserId(javax.servlet.http.HttpServletRequest request,
                                            javax.servlet.http.HttpServletResponse response)

### getMessages

    protected org.cometd.Message[] getMessages(javax.servlet.http.HttpServletRequest request)
                                        throws java.io.IOException,
                                               javax.servlet.ServletException

  Throws:
    `java.io.IOException`
    `javax.servlet.ServletException`

### handleJSONParseException

    protected org.cometd.Message[] handleJSONParseException(javax.servlet.http.HttpServletRequest request,
                                                            java.lang.String messageString,
                                                            java.lang.Exception x)
                                                     throws javax.servlet.ServletException

  Override to customize the handling of JSON parse exceptions. Default behavior is to log at warn level on logger "org.cometd.json" and to throw a ServletException that wraps the original exception.

  Parameters:
    `request` - the request object
    `messageString` - the JSON text, if available; can be null if the JSON is not buffered before being parsed.
    `x` - the exception thrown during parsing
  Returns:
    a non-null array of messages, possibly empty, if the JSON parse exception is recoverable
  Throws:
    `javax.servlet.ServletException` - if the JSON parsing is not recoverable

Copyright © 1995-2010 Mort Bay Consulting. All Rights Reserved.