org.atmosphere.cpr.ApplicationConfig Maven / Gradle / Ivy
/*
* Copyright 2008-2024 Async-IO.org
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package org.atmosphere.cpr;
import org.atmosphere.pool.PoolableBroadcasterFactory;
/**
* Web.xml init-param configuration supported by Atmosphere.
*
* @author Jeanfrancois Arcand
*/
public interface ApplicationConfig {
/**
* The location of the atmosphere.xml file.
*
* Default: META-INF/
* Value: org.atmosphere.atmosphereDotXml
*/
String PROPERTY_ATMOSPHERE_XML = "org.atmosphere.atmosphereDotXml";
/**
* The path that will be used to map request to Jersey.
*
* Default: ""
* Value: org.atmosphere.jersey.servlet-mapping
*/
String PROPERTY_SERVLET_MAPPING = "org.atmosphere.jersey.servlet-mapping";
/**
* Set Atmosphere to use the {@link org.atmosphere.container.BlockingIOCometSupport}, e.g blocking I/O.
*
* Default: false
* Value: org.atmosphere.useBlocking
*/
String PROPERTY_BLOCKING_COMETSUPPORT = "org.atmosphere.useBlocking";
/**
* Set Atmosphere to throw exception on cloned request
*
* Default: false
* Value: org.atmosphere.throwExceptionOnClonedRequest
*/
String PROPERTY_THROW_EXCEPTION_ON_CLONED_REQUEST = "org.atmosphere.throwExceptionOnClonedRequest";
/**
* Set Atmosphere to use the container native Comet support.
*
* Default: false
* Value: org.atmosphere.useNative
*/
String PROPERTY_NATIVE_COMETSUPPORT = "org.atmosphere.useNative";
/**
* Force Atmosphere to use WebSocket.
*
* Default: true
* Value: org.atmosphere.useWebSocket
*/
String WEBSOCKET_SUPPORT = "org.atmosphere.useWebSocket";
/**
* Force Atmosphere to use WebSocket + Servlet 3.0 API.
*
* Default: false
* Value: org.atmosphere.useWebSocketAndServlet3
*/
String WEBSOCKET_SUPPORT_SERVLET3 = "org.atmosphere.useWebSocketAndServlet3";
/**
* Force Atmosphere to use stream when writing bytes.
*
* Default: true
* Value: org.atmosphere.useStream
*/
String PROPERTY_USE_STREAM = "org.atmosphere.useStream";
/**
* The default {@link org.atmosphere.cpr.BroadcasterFactory} class.
*
* Default: org.atmosphere.cpr.DefaultBroadcasterFactory
* Value: org.atmosphere.cpr.broadcasterFactory
*/
String BROADCASTER_FACTORY = "org.atmosphere.cpr.broadcasterFactory";
/**
* The default {@link org.atmosphere.cpr.Broadcaster} class.
*
* Default: org.atmosphere.cpr.DefaultBroadcaster
* Value: org.atmosphere.cpr.broadcasterClass
*/
String BROADCASTER_CLASS = "org.atmosphere.cpr.broadcasterClass";
/**
* The default {@link org.atmosphere.cpr.BroadcasterCache} class.
*
* Default: org.atmosphere.cache.DefaultBroadcasterCache (Doing nothing, not caching anything)
* Value: org.atmosphere.cpr.broadcasterCacheClass
*/
String BROADCASTER_CACHE = "org.atmosphere.cpr.broadcasterCacheClass";
/**
* Tell Atmosphere which {@link AsyncSupport} implementation to use.
*
* Default: "" (Auto detected by Atmosphere)
* Value: org.atmosphere.cpr.asyncSupport
*/
String PROPERTY_COMET_SUPPORT = "org.atmosphere.cpr.asyncSupport";
/**
* Tell Atmosphere to use {@link jakarta.servlet.http.HttpSession}.
*
* Default: false
* Value: org.atmosphere.cpr.sessionSupport
*/
String PROPERTY_SESSION_SUPPORT = "org.atmosphere.cpr.sessionSupport";
/**
* Tell Atmosphere to create a new {@link jakarta.servlet.http.HttpSession} when starting and when {@link #PROPERTY_SESSION_SUPPORT} is set to true.
*
* Default: true
* Value: org.atmosphere.cpr.sessionCreate
*/
String PROPERTY_SESSION_CREATE = "org.atmosphere.cpr.sessionCreate";
/**
* Tell Atmosphere to set session max inactive interval to -1 when an atmosphere connection exists. See {@link jakarta.servlet.http.HttpSession#setMaxInactiveInterval(int)}
*
* Default: true
* Value: org.atmosphere.cpr.removeSessionTimeout
*/
String PROPERTY_ALLOW_SESSION_TIMEOUT_REMOVAL = "org.atmosphere.cpr.removeSessionTimeout";
/**
* Force Atmosphere to invoke {@link AtmosphereResource#resume()} after the first {@link org.atmosphere.cpr.Broadcaster#broadcast(Object)} invocation.
*
* Default: false
* Value: org.atmosphere.resumeOnBroadcast
*/
String RESUME_ON_BROADCAST = "org.atmosphere.resumeOnBroadcast";
/**
* The default Servlet used when forwarding request.
*
* Default: default
* Value: default
*/
String DEFAULT_NAMED_DISPATCHER = "default";
/**
* Tell Atmosphere to not write the no-cache header. Default is false, e.g Atmosphere will write them.
*
* Default: false
* Value: org.atmosphere.cpr.noCacheHeaders
*/
String NO_CACHE_HEADERS = "org.atmosphere.cpr.noCacheHeaders";
/**
* Tell Atmosphere to not write the access-control header. Default is false, e.g Atmosphere will write them.
*
* Default: false
* Value: org.atmosphere.cpr.dropAccessControlAllowOriginHeader
*/
String DROP_ACCESS_CONTROL_ALLOW_ORIGIN_HEADER = "org.atmosphere.cpr.dropAccessControlAllowOriginHeader";
/**
* The {@link org.atmosphere.cpr.BroadcasterLifeCyclePolicy} policy to use.
*
* Default: BroadcasterLifeCyclePolicy.NEVER
* Value: org.atmosphere.cpr.broadcasterLifeCyclePolicy
*/
String BROADCASTER_LIFECYCLE_POLICY = "org.atmosphere.cpr.broadcasterLifeCyclePolicy";
/**
* Tell Atmosphere the {@link org.atmosphere.websocket.WebSocketProcessor} to use.
*
* Default: org.atmosphere.websocket.DefaultWebSocketProcessor
* Value: org.atmosphere.websocket.WebSocketProcessor
*/
String WEBSOCKET_PROCESSOR = "org.atmosphere.websocket.WebSocketProcessor";
/**
* Tell Atmosphere the {@link org.atmosphere.websocket.WebSocketProtocol} to use.
*
* Default: org.atmosphere.websocket.SimpleHttpProtocol
* Value: org.atmosphere.websocket.WebSocketProtocol
*/
String WEBSOCKET_PROTOCOL = "org.atmosphere.websocket.WebSocketProtocol";
/**
* Tell Atmosphere the content-type to use when a WebSocket message is dispatched as an AtmosphereRequest.
*
* Default: text/plain
* Value: org.atmosphere.websocket.messageContentType
*/
String WEBSOCKET_CONTENT_TYPE = "org.atmosphere.websocket.messageContentType";
/**
* Tell Atmosphere the content-type to use when a WebSocket message is dispatched as an AtmosphereRequest.
*
* Default: text/event-stream
* Value: org.atmosphere.sse.contentType
*/
String SSE_CONTENT_TYPE = "org.atmosphere.sse.contentType";
/**
* Tell Atmosphere the method to use when a WebSocket message is dispatched as an AtmosphereRequest.
*
* Default: POST
* Value: org.atmosphere.websocket.messageMethod
*/
String WEBSOCKET_METHOD = "org.atmosphere.websocket.messageMethod";
/**
* Tell Atmosphere how long a WebSocket connection can stay idle.
*
* Default: 5 minutes
* Value: org.atmosphere.websocket.maxIdleTime
*/
String WEBSOCKET_IDLETIME = "org.atmosphere.websocket.maxIdleTime";
/**
* Timeout of JSR356 write operation.
* See {@link jakarta.websocket.RemoteEndpoint.Async#setSendTimeout(long)}
*
* Default: 1 minute
* Value: org.atmosphere.websocket.writeTimeout
*/
String WEBSOCKET_WRITE_TIMEOUT = "org.atmosphere.websocket.writeTimeout";
/**
* Tell Atmosphere the WebSocket write buffer size.
*
* Default: 8192
* Value: org.atmosphere.websocket.bufferSize
*/
String WEBSOCKET_BUFFER_SIZE = "org.atmosphere.websocket.bufferSize";
/**
* Tell Atmosphere the path delimiter to use when a WebSocket message contains the path as it first line. The
* value is used to create a HttpServletRequest.
*
* Default: ""
* Value: org.atmosphere.websocket.pathDelimiter
*/
String WEBSOCKET_PATH_DELIMITER = "org.atmosphere.websocket.pathDelimiter";
/**
* Set the WebSocket max text size. Size lower than 0: no aggregation of frames to messages, larger than 0: max size of text frame aggregation buffer in characters
*
* Default: 8192
* Value: org.atmosphere.websocket.maxTextMessageSize
*/
String WEBSOCKET_MAXTEXTSIZE = "org.atmosphere.websocket.maxTextMessageSize";
/**
* Set the WebSocket max text size. Size < 0: no aggregation of frames to messages, size >=0: max size of text frame aggregation buffer in characters
*
* Default: 8192
* Value: org.atmosphere.websocket.maxBinaryMessageSize
*/
String WEBSOCKET_MAXBINARYSIZE = "org.atmosphere.websocket.maxBinaryMessageSize";
/**
* Tell Atmosphere to enforce the same origin policy for all incoming WebSocket handshakes.
*
* Default: true
* Value: org.atmosphere.websocket.requireSameOrigin
*/
String WEBSOCKET_REQUIRE_SAME_ORIGIN = "org.atmosphere.websocket.requireSameOrigin";
/**
* Set the minimum WebSocket version that Jetty should accept. If not set, Jetty defaults to version 13 (RFC6455).
*
* Jetty 7 and 8 is able to support buggy pre-draft versions of WebSocket. Set to 0 or -1 to let Jetty support all accept all supported versions.
*
* Default: [nothing]
* Value: org.atmosphere.websocket.jetty.minVersion
*/
String JETTY_WEBSOCKET_MIN_VERSION = "org.atmosphere.websocket.jetty.minVersion";
/**
* The {@link AtmosphereResource}.
*
* Default: org.atmosphere.cpr.AtmosphereResourceImpl
* Value: org.atmosphere.cpr.AtmosphereResource
*/
String ATMOSPHERE_RESOURCE = "org.atmosphere.cpr.AtmosphereResource";
/**
* A list of {@link BroadcastFilter} separated by comma that will be added to every new {@link Broadcaster}.
*
* Default: ""
* Value: org.atmosphere.cpr.broadcastFilterClasses
*/
String BROADCAST_FILTER_CLASSES = "org.atmosphere.cpr.broadcastFilterClasses";
/**
* A request attribute telling a {@link AsyncSupport} if the AtmosphereResource was resumed on timeout or by an application.
* This attribute is for WebServer that doesn't support time-outs (like Jetty 6)
*
* Default: false
* Value: org.atmosphere.cpr.AtmosphereServlet.resumedOnTimeout
*/
String RESUMED_ON_TIMEOUT = "org.atmosphere.cpr.AtmosphereServlet.resumedOnTimeout";
/**
* Disable invoking {@link org.atmosphere.cpr.AtmosphereHandler#onStateChange(org.atmosphere.cpr.AtmosphereResourceEvent)} when the connection times out or get cancelled.
*
* Default: false
* Value: org.atmosphere.disableOnStateEvent
*/
String DISABLE_ONSTATE_EVENT = "org.atmosphere.disableOnStateEvent";
/**
* The maximum time, in milliseconds, a connection gets idle or when the WIFI disconnection wasn't detected by the underlying container. This property works with the
* {@link org.atmosphere.interceptor.IdleResourceInterceptor}, e.g you must install that interceptor in order to use the property.
*
* Default: -1 (not enabled)
* Value: org.atmosphere.cpr.CometSupport.maxInactiveActivity
*/
String MAX_INACTIVE = "org.atmosphere.cpr.CometSupport.maxInactiveActivity";
/**
* Allow query string as set as request's header.
*
* Default: true
* Value: org.atmosphere.cpr.allowQueryStreamAsPostOrGet
*/
String ALLOW_QUERYSTRING_AS_REQUEST = "org.atmosphere.cpr.allowQueryStreamAsPostOrGet";
/**
* Disallow Atmosphere to modify the query string of incoming connections.
*
* In some cases the Atmosphere javascript client attaches request headers as query string parameters. The default Atmosphere
* behaviour is to parse the query string and remove the Atmosphere parameters from the query string. This behaviour breaks
* at least WebSocket draft-00 / hixie-76, but by setting this value to true the query string is never modified by Atmosphere.
*
* Default: false
* Value: org.atmosphere.cpr.disallowModifyQueryString
*/
String DISALLOW_MODIFY_QUERYSTRING = "org.atmosphere.cpr.disallowModifyQueryString";
/**
* Configure {@link Broadcaster} to share the same {@link java.util.concurrent.ExecutorService} among them.
*
* Default: true
* Value: org.atmosphere.cpr.broadcaster.shareableThreadPool
*/
String BROADCASTER_SHARABLE_THREAD_POOLS = "org.atmosphere.cpr.broadcaster.shareableThreadPool";
/**
* The maximum number of Thread created when processing broadcast operations {@link BroadcasterConfig#setExecutorService(java.util.concurrent.ExecutorService)}.
*
* Default: unlimited
* Value: org.atmosphere.cpr.broadcaster.maxProcessingThreads
*/
String BROADCASTER_MESSAGE_PROCESSING_THREADPOOL_MAXSIZE = "org.atmosphere.cpr.broadcaster.maxProcessingThreads";
/**
* The maximum number of Thread created when writing requests {@link BroadcasterConfig#setAsyncWriteService(java.util.concurrent.ExecutorService)}.
*
* Default: 200
* Value: org.atmosphere.cpr.broadcaster.maxAsyncWriteThreads
*/
String BROADCASTER_ASYNC_WRITE_THREADPOOL_MAXSIZE = "org.atmosphere.cpr.broadcaster.maxAsyncWriteThreads";
/**
* Time out threads created by the {@link org.atmosphere.util.ExecutorsFactory}.
*
* Default: true}
* Value: org.atmosphere.cpr.allowCoreThreadTimeOut
* #see {@link java.util.concurrent.ThreadPoolExecutor#allowCoreThreadTimeOut}
*/
String ALLOW_CORE_THREAD_TIMEOUT = "org.atmosphere.cpr.allowCoreThreadTimeOut";
/**
* The maximum number of Thread created by the {@link org.atmosphere.util.ExecutorsFactory#getScheduler(AtmosphereConfig)}.
*
* Default: {@link Runtime#availableProcessors()}
* Value: org.atmosphere.cpr.maxSchedulerThread
*/
String SCHEDULER_THREADPOOL_MAXSIZE = "org.atmosphere.cpr.maxSchedulerThread";
/**
* BroadcasterLifecycle max idle time before executing.
*
* Default: 5 minutes
* Value: org.atmosphere.cpr.maxBroadcasterLifeCyclePolicyIdleTime
*/
String BROADCASTER_LIFECYCLE_POLICY_IDLETIME = "org.atmosphere.cpr.maxBroadcasterLifeCyclePolicyIdleTime";
/**
* Recover from a {@link Broadcaster} that has been destroyed.
*
* Default: true
* Value: org.atmosphere.cpr.recoverFromDestroyedBroadcaster
*/
String RECOVER_DEAD_BROADCASTER = "org.atmosphere.cpr.recoverFromDestroyedBroadcaster";
/**
* Tell Atmosphere which AtmosphereHandler should be used. You can do the same using atmosphere.xml
*
* Default: ""
* Value: org.atmosphere.cpr.AtmosphereHandler
*/
String ATMOSPHERE_HANDLER = "org.atmosphere.cpr.AtmosphereHandler";
/**
* The AtmosphereHandler defined using the property will be mapped to that value. Same as atmosphere.xml
*
* Default: true
* Value: org.atmosphere.cpr.AtmosphereHandler.contextRoot
*/
String ATMOSPHERE_HANDLER_MAPPING = "org.atmosphere.cpr.AtmosphereHandler.contextRoot";
/**
* The Servlet's name where {@link Meteor} will be available.
*
* Default: ""
* Value: org.atmosphere.servlet
*/
String SERVLET_CLASS = "org.atmosphere.servlet";
/**
* The Filter's name where {@link Meteor} will be available.
*
* Default: ""
* Value: org.atmosphere.filter
*/
String FILTER_CLASS = "org.atmosphere.filter";
/**
* The Servlet's mapping value to the SERVLET_CLASS.
*
* Default: ""
* Value: org.atmosphere.mapping
*/
String MAPPING = "org.atmosphere.mapping";
/**
* The Servlet's mapping value to the FILTER_CLASS.
*
* Default: ""
* Value: org.atmosphere.filter.name
*/
String FILTER_NAME = "org.atmosphere.filter.name";
/**
* Define when a broadcasted message is cached. Value can be 'beforeFilter' or 'afterFilter'.
*
* Default: afterFilter
* Value: org.atmosphere.cpr.BroadcasterCache.strategy
*/
String BROADCASTER_CACHE_STRATEGY = "org.atmosphere.cpr.BroadcasterCache.strategy";
/**
* Support the Jersey location header for resuming. WARNING: this can cause memory leak if the connection is never
* resumed.
*
* Default: false
* Value: org.atmosphere.jersey.supportLocationHeader
*/
String SUPPORT_LOCATION_HEADER = "org.atmosphere.jersey.supportLocationHeader";
/**
* WebSocket version to exclude and downgrade to comet. Versions are separated by comma.
*
* Default: ""
* Value: org.atmosphere.websocket.bannedVersion
*/
String WEB_SOCKET_BANNED_VERSION = "org.atmosphere.websocket.bannedVersion";
/**
* Prevent Tomcat from closing connection when inputStream#read() reach the end of the stream, as documented in
* the tomcat documentation.
*
* Default: true
* Value: org.atmosphere.container.TomcatCometSupport.discardEOF
*/
String TOMCAT_CLOSE_STREAM = "org.atmosphere.container.TomcatCometSupport.discardEOF";
/**
* Write binary instead of String.
*
* Default: false
* Value: org.atmosphere.websocket.binaryWrite
*/
String WEBSOCKET_BINARY_WRITE = "org.atmosphere.websocket.binaryWrite";
/**
* Recycle (make them unusable) AtmosphereRequest/Response after wrapping a WebSocket message and delegating it to
* a Container.
*
* Default: false
* Value: org.atmosphere.cpr.recycleAtmosphereRequestResponse
*/
String RECYCLE_ATMOSPHERE_REQUEST_RESPONSE = "org.atmosphere.cpr.recycleAtmosphereRequestResponse";
/**
* The location of classes implementing the {@link AtmosphereHandler} interface.
*
* Default: "/WEB-INF/classes".
* Value: org.atmosphere.cpr.atmosphereHandlerPath
*/
String ATMOSPHERE_HANDLER_PATH = "org.atmosphere.cpr.atmosphereHandlerPath";
/**
* Jersey's ContainerResponseWriter.
*
* Default: ""
* Value: org.atmosphere.jersey.containerResponseWriterClass
*/
String JERSEY_CONTAINER_RESPONSE_WRITER_CLASS = "org.atmosphere.jersey.containerResponseWriterClass";
/**
* Execute the {@link org.atmosphere.websocket.WebSocketProtocol#onMessage(org.atmosphere.websocket.WebSocket, byte[], int, int)}.
*
* Default: false
* Value: org.atmosphere.websocket.WebSocketProtocol.executeAsync
*/
String WEBSOCKET_PROTOCOL_EXECUTION = "org.atmosphere.websocket.WebSocketProtocol.executeAsync";
/**
* Suppress the detection of JSR356 support. In Atmosphere 2.4.0 and newer, JSR356 has the
* precedence over container specific providers. This option can be used to suppress this ordering.
*
* Default: false
* Value: org.atmosphere.websocket.suppressJSR356
*/
String WEBSOCKET_SUPPRESS_JSR356 = "org.atmosphere.websocket.suppressJSR356";
/**
* The default content-type value used when Atmosphere requires one.
*
* Default: "text/plain"
* Value: org.atmosphere.cpr.defaultContentType
*/
String DEFAULT_CONTENT_TYPE = "org.atmosphere.cpr.defaultContentType";
/**
* A list of {@link AtmosphereInterceptor} class name that will be invoked before the {@link AtmosphereResource}
* gets delivered to an application or framework.
*
* Default: ""
* Value: org.atmosphere.cpr.AtmosphereInterceptor
*/
String ATMOSPHERE_INTERCEPTORS = "org.atmosphere.cpr.AtmosphereInterceptor";
/**
* Regex pattern for excluding file from being serviced by {@link AtmosphereFilter}.
*
* Default: {@link AtmosphereFilter#EXCLUDE_FILES}
* Value: org.atmosphere.cpr.AtmosphereFilter.excludes
*/
String ATMOSPHERE_EXCLUDED_FILE = "org.atmosphere.cpr.AtmosphereFilter.excludes";
/**
* The token used to separate broadcasted messages. This value is used by the client to parse several messages
* received in one chunk.
*
* Default: "|"
* Value: org.atmosphere.client.TrackMessageSizeInterceptor.delimiter
*/
String MESSAGE_DELIMITER = "org.atmosphere.client.TrackMessageSizeInterceptor.delimiter";
/**
* The method used that trigger automatic management of {@link AtmosphereResource} when the {@link org.atmosphere.interceptor.AtmosphereResourceLifecycleInterceptor}
* is used.
*
* Default: "GET"
* Value: org.atmosphere.interceptor.AtmosphereResourceLifecycleInterceptor.method
*/
String ATMOSPHERERESOURCE_INTERCEPTOR_METHOD = "org.atmosphere.interceptor.AtmosphereResourceLifecycleInterceptor.method";
/**
* The timeout, in second, for configuring the time an AtmosphereResource is suspended. Same as {@link AtmosphereResource#suspend(long, java.util.concurrent.TimeUnit)} when the {@link org.atmosphere.interceptor.AtmosphereResourceLifecycleInterceptor}
* is used.
*
* Default: "-1"
* Value: org.atmosphere.interceptor.AtmosphereResourceLifecycleInterceptor.timeout
*/
String ATMOSPHERERESOURCE_INTERCEPTOR_TIMEOUT = "org.atmosphere.interceptor.AtmosphereResourceLifecycleInterceptor.timeout";
/**
* Disable au-discovery of pre-installed {@link AtmosphereInterceptor}s.
*
* Default: false
* Value: org.atmosphere.cpr.AtmosphereInterceptor.disableDefaults
*/
String DISABLE_ATMOSPHEREINTERCEPTOR = "org.atmosphere.cpr.AtmosphereInterceptor.disableDefaults";
/**
* Set to true if Atmosphere is used as a library and you don't want to destroy associated static factory when undeploying.
*
* Default: false
* Value: org.atmosphere.runtime.shared
*/
String SHARED = "org.atmosphere.runtime.shared";
/**
* The suspended UUID of the suspended connection which is the same as {@link HeaderConfig#X_ATMOSPHERE_TRACKING_ID}
* but available to all transport.
*
* Value: org.atmosphere.cpr.AtmosphereResource.suspended.uuid
*/
String SUSPENDED_ATMOSPHERE_RESOURCE_UUID = "org.atmosphere.cpr.AtmosphereResource.suspended.uuid";
/**
* Use a unique UUID for all WebSocket message delivered on the same connection.
*
* Default: true
* Value: org.atmosphere.cpr.AtmosphereResource.uniqueUUID
*/
String UNIQUE_UUID_WEBSOCKET = "org.atmosphere.cpr.AtmosphereResource.uniqueUUID";
/**
* Set to true if order of message delivered to the client is not important.
*
* Default: false
* Value: org.atmosphere.cpr.Broadcaster.supportOutOfOrderBroadcast
*/
String OUT_OF_ORDER_BROADCAST = "org.atmosphere.cpr.Broadcaster.supportOutOfOrderBroadcast";
/**
* The write operation timeout, in millisecond, when using the {@link DefaultBroadcaster}. When the timeout occurs, the calling thread gets interrupted.
*
* Default: 5 * 60 * 1000 (5 minutes)
* Value: org.atmosphere.cpr.Broadcaster.writeTimeout
*/
String WRITE_TIMEOUT = "org.atmosphere.cpr.Broadcaster.writeTimeout";
/**
* The sleep time, in millisecond, before the {@link DefaultBroadcaster} release its reactive thread for pushing message
* and execute async write. Setting this value too high may create too many threads.
*
* Default: 1000
* Value: org.atmosphere.cpr.Broadcaster.threadWaitTime
*/
String BROADCASTER_WAIT_TIME = "org.atmosphere.cpr.Broadcaster.threadWaitTime";
/**
* Before 1.0.12, WebSocket's AtmosphereResource manually added to {@link Broadcaster} were added without checking
* if the parent, e.g the AtmosphereResource's created on the first request was already added to the Broadcaster. That caused
* some messages to be written twice instead of once.
*
* Default: false
* Value: org.atmosphere.websocket.backwardCompatible.atmosphereResource
*/
String BACKWARD_COMPATIBLE_WEBSOCKET_BEHAVIOR = "org.atmosphere.websocket.backwardCompatible.atmosphereResource";
/**
* A list, separated by comma, of package name to scan when looking for Atmosphere's component annotated with Atmosphere's annotation.
*
* Default: ""
* Value: org.atmosphere.cpr.packages
*/
String ANNOTATION_PACKAGE = "org.atmosphere.cpr.packages";
/**
* The annotation processor.
*
* Default: org.atmosphere.cpr.DefaultAnnotationProcessor
* Value: org.atmosphere.cpr.AnnotationProcessor
*/
String ANNOTATION_PROCESSOR = "org.atmosphere.cpr.AnnotationProcessor";
/**
* Define an implementation of the {@link org.atmosphere.util.EndpointMapper}.
*
* Default: org.atmosphere.cpr.DefaultEndpointMapper
* Value: org.atmosphere.cpr.EndpointMapper
*/
String ENDPOINT_MAPPER = "org.atmosphere.cpr.EndpointMapper";
/**
* The list of content-type to exclude when delimiting message.
*
* Default: ""
* Value: org.atmosphere.client.TrackMessageSizeInterceptor.excludedContentType
*/
String EXCLUDED_CONTENT_TYPES = "org.atmosphere.client.TrackMessageSizeInterceptor.excludedContentType";
/**
* Allow defining the Broadcaster's Suspend Policy {@link Broadcaster#setSuspendPolicy(long, org.atmosphere.cpr.Broadcaster.POLICY)}.
*
* Default: FIFO
* Value: org.atmosphere.cpr.Broadcaster.POLICY
*/
String BROADCASTER_POLICY = "org.atmosphere.cpr.Broadcaster.POLICY";
/**
* Allow defining the Broadcaster's maximum Suspended Atmosphere Policy {@link Broadcaster#setSuspendPolicy(long, org.atmosphere.cpr.Broadcaster.POLICY)}.
*
* Default: -1 (unlimited)
* Value: org.atmosphere.cpr.Broadcaster.POLICY.maximumSuspended
*/
String BROADCASTER_POLICY_TIMEOUT = "org.atmosphere.cpr.Broadcaster.POLICY.maximumSuspended";
/**
* Change the default regex used when mapping AtmosphereHandler. Default: {@link AtmosphereFramework#MAPPING_REGEX}
*
* Default: "[a-zA-Z0-9-&.*_=@;\?]+"
* Value: org.atmosphere.client.ApplicationConfig.mappingRegex
*/
String HANDLER_MAPPING_REGEX = "org.atmosphere.cpr.mappingRegex";
/**
* The timeout, in milliseconds, before an {@link AtmosphereResource}'s state get discarded.
*
* Default: 300000 (5 minutes)
* Value: org.atmosphere.interceptor.AtmosphereResourceStateRecovery.timeout
*/
String STATE_RECOVERY_TIMEOUT = "org.atmosphere.interceptor.AtmosphereResourceStateRecovery.timeout";
/**
* jsr356 Path mapping length for add(ServerEndpointConfig.Builder.create(JSR356Endpoint.class, "/{path}/{path/...}").
* Default: 5
* Value: MUST be set using System's properties: org.atmosphere.cpr.jsr356.pathMappingLength"
*/
String JSR356_PATH_MAPPING_LENGTH = "org.atmosphere.cpr.jsr356.pathMappingLength";
/**
* Default Server-Sent Event content type.
* Default: text/event-stream
* Value: org.atmosphere.interceptor.SSEAtmosphereInterceptor.contentType
*/
String SSE_DEFAULT_CONTENTTYPE = "org.atmosphere.interceptor.SSEAtmosphereInterceptor.contentType";
/**
* A list, separated by comma, of package name to scan when looking for @AtmosphereAnnotation custom Annotation.
*
* Default: ""
* Value: org.atmosphere.annotation.packages
*/
String CUSTOM_ANNOTATION_PACKAGE = "org.atmosphere.annotation.packages";
/**
* Set to false if you want Atmosphere to scan the entire classpath looking for annotation.
*
* Default: true
* Value: org.atmosphere.cpr.scanClassPath
*/
String SCAN_CLASSPATH = "org.atmosphere.cpr.scanClassPath";
/**
* Use a build in {@link jakarta.servlet.http.HttpSession} when using native WebSocket implementation.
*
* Default: false
* Value: org.atmosphere.cpr.useBuildInSession
*/
String BUILT_IN_SESSION = "org.atmosphere.cpr.useBuildInSession";
/**
* The default {@link AtmosphereObjectFactory} class.
*
* Default: DefaultAtmosphereObjectFactory (calls newInstance() on class)
* Value: org.atmosphere.cpr.objectFactory
*/
String OBJECT_FACTORY = "org.atmosphere.cpr.objectFactory";
/**
* The maximum number of time, in seconds, thread will be stay alive when created with {@link org.atmosphere.util.ExecutorsFactory}. Those {@link java.util.concurrent.Executor}.
* are used by the {@link DefaultBroadcaster}'s Thread Pool. See also {@link #BROADCASTER_ASYNC_WRITE_THREADPOOL_MAXSIZE} and {@link #BROADCASTER_MESSAGE_PROCESSING_THREADPOOL_MAXSIZE}
*
* Default: 10 seconds
* Value: org.atmosphere.cpr.threadPool.maxKeepAliveThreads
*/
String EXECUTORFACTORY_KEEP_ALIVE = "org.atmosphere.cpr.threadPool.maxKeepAliveThreads";
/**
* In Memory WebSocket buffered message size;
*
* Default: 2097152 (2 mg)
* Value: org.atmosphere.websocket.webSocketBufferingMaxSize
*/
String IN_MEMORY_STREAMING_BUFFER_SIZE = "org.atmosphere.websocket.webSocketBufferingMaxSize";
/**
* Scan the classpath to find {@link Broadcaster}
*
* Default: true)
* Value: org.atmosphere.cpr.Broadcaster.scanClassPath
*/
String AUTODETECT_BROADCASTER = "org.atmosphere.cpr.Broadcaster.scanClassPath";
/**
* Disables the list of {@link AtmosphereInterceptor}s.
*
* Default: false
* Value: org.atmosphere.cpr.AtmosphereInterceptor.disable
*/
String DISABLE_ATMOSPHEREINTERCEPTORS = "org.atmosphere.cpr.AtmosphereInterceptor.disable";
/**
* The JSR 356 WebSocket root path. Use this property if more than one AtmosphereServlet gets deployed inside
* the same application, and the guessed mapping path is not the one expected.
*
* Default: ""
* Value: org.atmosphere.container.JSR356AsyncSupport.mappingPath
*/
String JSR356_MAPPING_PATH = "org.atmosphere.container.JSR356AsyncSupport.mappingPath";
/**
* The default {@link jakarta.servlet.http.HttpSession#setMaxInactiveInterval(int)}
*
* Default: -1
* Value: org.atmosphere.cpr.session.maxInactiveInterval
*/
String SESSION_MAX_INACTIVE_INTERVAL = "org.atmosphere.cpr.session.maxInactiveInterval";
/**
* Wait X milliseconds before considering the {@link AtmosphereResource} closed. This is useful when {@link org.atmosphere.util.Utils#atmosphereProtocol(AtmosphereRequest r))}
* return true, and let the client send the {@link HeaderConfig#DISCONNECT_TRANSPORT_MESSAGE} message.
*
* Default: 500
* Value: org.atmosphere.cpr.session.delayClosingTime
*/
String CLOSED_ATMOSPHERE_THINK_TIME = "org.atmosphere.cpr.delayClosingTime";
/**
* The maximum time, in seconds, for a message to stay cached when using the {@link org.atmosphere.cache.UUIDBroadcasterCache}
*
* Default: 60
* Value: org.atmosphere.cache.UUIDBroadcasterCache.clientIdleTime
*/
String UUIDBROADCASTERCACHE_CLIENT_IDLETIME = "org.atmosphere.cache.UUIDBroadcasterCache.clientIdleTime";
/**
* The frequency, in seconds, for the {@link org.atmosphere.cache.UUIDBroadcasterCache} is pruning cached messages.
*
* Default: 30
* Value: org.atmosphere.cache.UUIDBroadcasterCache.invalidateCacheInterval
*/
String UUIDBROADCASTERCACHE_IDLE_CACHE_INTERVAL = "org.atmosphere.cache.UUIDBroadcasterCache.invalidateCacheInterval";
/**
* Invoke Atmosphere interceptor for on every websocket message.
*
* Default: true
* Value: org.atmosphere.websocket.DefaultWebSocketProcessor.invokeInterceptorsOnMessage
*/
String INVOKE_ATMOSPHERE_INTERCEPTOR_ON_WEBSOCKET_MESSAGE = "org.atmosphere.websocket.DefaultWebSocketProcessor.invokeInterceptorsOnMessage";
/**
* Disable the Atmosphere Protocol version check. This can be used to supprt version of atmosphere-javascript lower than 2.2.1
*
* Default: true
* Value: org.atmosphere.interceptor.JavaScriptProtocol.enforceAtmosphereProtocol
*/
String ENFORCE_ATMOSPHERE_VERSION = "org.atmosphere.interceptor.JavaScriptProtocol.enforceAtmosphereProtocol";
/**
* Rewrite the original handshake request URI when websocket is used, trimming the http://host:port from the value.
* This is required with when JSR356 is used and JAXRS like Jersey2 is used.
*
* Default: true
* Value: org.atmosphere.websocket.protocol.SimpleHttpProtocol.rewriteURL
*/
String REWRITE_WEBSOCKET_REQUESTURI = "org.atmosphere.websocket.protocol.SimpleHttpProtocol.rewriteURL";
/**
* The heartbeat padding String.
*
* Default: ' '
* Value: org.atmosphere.interceptor.HeartbeatInterceptor.paddingChar
*/
String HEARTBEAT_PADDING_CHAR = "org.atmosphere.interceptor.HeartbeatInterceptor.paddingChar";
/**
* The heartbeat frequency, in seconds.
*
* Default: 60
* Value: org.atmosphere.interceptor.HeartbeatInterceptor.heartbeatFrequencyInSeconds
*/
String HEARTBEAT_INTERVAL_IN_SECONDS = "org.atmosphere.interceptor.HeartbeatInterceptor.heartbeatFrequencyInSeconds";
/**
* Configuration key for client heartbeat.
*
* Default: 0 (disabled)
* Value: org.atmosphere.interceptor.HeartbeatInterceptor.clientHeartbeatFrequencyInSeconds
*/
String CLIENT_HEARTBEAT_INTERVAL_IN_SECONDS = "org.atmosphere.interceptor.HeartbeatInterceptor.clientHeartbeatFrequencyInSeconds";
/**
* Resume the long-polling or jsonp connection on every heartbeat (I/O operations).
*
* Default: true
* Value: org.atmosphere.interceptor.HeartbeatInterceptor.resumeOnHeartbeat
*/
String RESUME_ON_HEARTBEAT = "org.atmosphere.interceptor.HeartbeatInterceptor.resumeOnHeartbeat";
/**
* Set the default {@link org.atmosphere.cpr.Serializer} implementation {@link org.atmosphere.cpr.AtmosphereResource}s use
* to serialize broadcasted objects.
*
* Default: empty (no Serialize class used)
* Value: org.atmosphere.cpr.AtmosphereResource.defaultSerializer
*/
String DEFAULT_SERIALIZER = "org.atmosphere.cpr.AtmosphereResource.defaultSerializer";
/**
* Disable container managed framework auto initialization during startup lifecycle (Servlet 3.0).
* This is useful e.g. if special initialization or framework extensions are needed.
*
* Default: false (Auto initialization enabled)
* Value: org.atmosphere.cpr.AtmosphereInitializer.disabled
*
*
* Example init-param:
*
*
* <init-param>
* <param-name>org.atmosphere.cpr.AtmosphereInitializer.disabled</param-name>
* <param-value>true</param-value>
* </init-param>
*
*
* @see {@see https://github.com/Atmosphere/atmosphere/issues/1695}
*/
String DISABLE_ATMOSPHERE_INITIALIZER = "org.atmosphere.cpr.AtmosphereInitializer.disabled";
/**
* Disable Google Analytics.
* Default: true (enabled)
* Value: org.atmosphere.cpr.AtmosphereFramework.analytics
*/
String ANALYTICS = "org.atmosphere.cpr.AtmosphereFramework.analytics";
/**
* For use of (@link BytecodeBasedAnnotationProcessor}
* Default: false
* Value: org.atmosphere.cpr.annotation.useBytecodeProcessor
*/
String BYTECODE_PROCESSOR = "org.atmosphere.cpr.annotation.useBytecodeProcessor";
/**
* The web.xml servlet-name.
* Default: AtmosphereServlet
* Value: org.atmosphere.servlet
*/
String SERVLET_NAME = "org.atmosphere.servlet";
/**
* Try to read a HTTP GET body.
* Default: false
* Value: org.atmosphere.util.IOUtils.readGetBody
*/
String READ_GET_BODY = "org.atmosphere.util.IOUtils.readGetBody";
/**
* If a I/O exception occurs during a flush() or flushBuffer() exception, cache the bytes that was previously written.
* When the server buffer the bytes, the bytes may or may not been properly written to the client and those will be lost if you set that
* value to false. If the bytes where properly written, the bytes may be cached and may be sent twice to the client.
* Default: true
* Value: org.atmosphere.cpr.Broadcaster.cacheOnIOFlushException
*/
String CACHE_MESSAGE_ON_IO_FLUSH_EXCEPTION = "org.atmosphere.cpr.Broadcaster.cacheOnIOFlushException";
/**
* Share between Broadcaster the same List of {@link BroadcasterListener} and {@link BroadcasterLifeCyclePolicyListener}.
* Setting the value to true may significantly reduce the memory used by those listeners if a lot of Broadcaster are created.
*
* Listeners MUST be Thread-Safe to use that feature.
*
* Default: false
* Value: org.atmosphere.cpr.Broadcaster.sharedListenersList
*/
String BROADCASTER_SHAREABLE_LISTENERS = "org.atmosphere.cpr.Broadcaster.sharedListenersList";
/**
* When the {@link org.atmosphere.pool.PoolableBroadcasterFactory} is enabled, set to true
* for tracking created {@link org.atmosphere.cpr.Broadcaster} and their associated id, preventing duplicate.
*
* Default: false
* Value:org.atmosphere.pool.trackPooledBroadcaster
*/
String SUPPORT_TRACKED_BROADCASTER = "org.atmosphere.pool.trackPooledBroadcaster";
/**
* The {@link org.atmosphere.pool.PoolableProvider} used by the {@link PoolableBroadcasterFactory}
*
* Default: org.atmosphere.pool.UnboundedApachePoolableProvider
* Value: org.atmosphere.pool.poolableProvider
*/
String POOLEABLE_PROVIDER = "org.atmosphere.pool.poolableProvider";
/**
* The size of the pool powering {@link org.atmosphere.pool.BoundedApachePoolableProvider}
*
* Default: 200
* Value: org.atmosphere.pool.BoundedApachePoolableProvider.size
*/
String BROADCASTER_FACTORY_POOL_SIZE = "org.atmosphere.pool.BoundedApachePoolableProvider.size";
/**
* The time, in second, to wait for a new object from the {@link org.atmosphere.pool.BoundedApachePoolableProvider}
*
* Default: 10 seconds
* Value: org.atmosphere.pool.BoundedApachePoolableProvider.waitingTime
*/
String BROADCASTER_FACTORY_EMPTY_WAIT_TIME_IN_SECONDS = "org.atmosphere.pool.BoundedApachePoolableProvider.waitingTime";
/**
* The path to the org.atmosphere.cpr.AtmosphereFramework configuration file
* Default: META-INF/services
* Value: org.atmosphere.cpr.metaServicePath
*/
String META_SERVICE_PATH = "org.atmosphere.cpr.metaServicePath";
/**
* Close the {@link AtmosphereResponseImpl#getOutputStream()} when {@link org.atmosphere.cpr.AtmosphereResource#close()}
* gets invoked, or when the underlying server close the connection.
* Default: false
* Value: org.atmosphere.cpr.AsynchronousProcessor.closeOnCancel
*/
String CLOSE_STREAM_ON_CANCEL = "org.atmosphere.cpr.AsynchronousProcessor.closeOnCancel";
/**
* Use init parameters specified for servlet context in addition to servlet config
* Default: false
* Value: org.atmosphere.cpr.AtmosphereConfig.getInitParameter
*/
String USE_SERVLET_CONTEXT_PARAMETERS = "org.atmosphere.cpr.AtmosphereConfig.getInitParameter";
/**
* Use {@link ForkJoinPool} for dispatching messages and executing async I/O) operation
* Default: true
* Value: org.atmosphere.useForkJoinPool
*/
String USE_FORJOINPOOL = "org.atmosphere.useForkJoinPool";
/**
* The completion of response writing is reported to AtmosphereResponse. An interceptor can use the completion
* status of AtmosphereResponse to change the behavior of its transform method.
*
* Default: false
*/
String RESPONSE_COMPLETION_AWARE = "org.atmosphere.cpr.ResponseCompletionAware";
/**
* The completion status of AtmosphereResponse is reset after each completion so that the subsequent write operations
* are handled as a series of new write operations.
*
* Default: false
*/
String RESPONSE_COMPLETION_RESET = "org.atmosphere.cpr.ResponseCompletionReset";
/**
* Writes the given data to the given outputstream in two steps with extra flushes to make servers notice if the connection has been closed.
* This enables caching the message instead of losing it, if the client is in the progress of reconnecting via a Proxy where
* the server fails to detect the connection has been closed.
*
* This value only apply to LONG-POLLING transport
*
* Default: false
* Value: org.atmosphere.cpr.AbstractReflectorAtmosphereHandler.twoStepsWrite
*/
String TWO_STEPS_WRITE = "org.atmosphere.cpr.AbstractReflectorAtmosphereHandler.twoStepsWrite";
/**
* How many times the {@link org.atmosphere.inject.InjectableObjectFactory} will try to construct and inject an object
* from an {@link org.atmosphere.inject.Injectable}. This happens when an Injectable returns null instead of the
* expected Injection
*
* Default: 5
* Value: org.atmosphere.cpr.InjectableObjectFactory.maxTry
*/
String INJECTION_TRY = "org.atmosphere.cpr.InjectableObjectFactory.maxTry";
/**
* {@link org.atmosphere.inject.InjectableObjectFactory} listeners.
*
* Listeners MUST be Thread-Safe to use that feature.
*
* Default: null
* Value: org.atmosphere.inject.InjectableObjectFactory.listeners
*/
String INJECTION_LISTENERS = "org.atmosphere.inject.InjectableObjectFactory.listeners";
/**
* Delay the sending of the Atmosphere's first message protocol by X seconds
*
* Default: 0
* Value: org.atmosphere.interceptor.JavaScriptProtocol.delayProtocolInSeconds
*/
String DELAY_PROTOCOL_IN_MILLISECONDS = "org.atmosphere.interceptor.JavaScriptProtocol.delayProtocolInMilliseconds";
/**
* Invoke flushBuffer when SSE and Streaming is used with the {@link org.atmosphere.interceptor.HeartbeatInterceptor}
*
* Default: true
* Value: org.atmosphere.interceptor.HeartbeatInterceptor.flushBuffer
*/
String FLUSH_BUFFER_HEARTBEAT = "org.atmosphere.interceptor.HeartbeatInterceptor.flushBuffer";
/**
* Set content-type header in the first response.
* See {@link org.atmosphere.cpr.AtmosphereFramework#configureRequestResponse}
* no default value
* value : text/plain; charset=utf-8
*/
String CONTENT_TYPE_FIRST_RESPONSE = "org.atmosphere.cpr.contentTypeFirstResponse";
/**
* Allow the WebSocketProtocol to invoke the AsynchronousProcessor when a status of 1005 is received.
* This property is required since atmosphere-javascript 3.1.0 in order to prevent the WebSocketProtocol
* to wrongly detect an unexpected disconnect. atmosphere-javascript 3.1.0 started to use navigation.sendBeacon() API
* to detect disconnect from page reload. This property is for backward compatibility.
*
* Default: false
* Value: org.atmosphere.websocket.WebSocketProtocol.allow1005disconnectEvent
*/
String ALLOW_WEBSOCKET_STATUS_CODE_1005_AS_DISCONNECT = "org.atmosphere.websocket.WebSocketProtocol.allow1005disconnectEvent";
}