Class WsServerContainer
java.lang.Object
org.apache.tomcat.websocket.WsWebSocketContainer
org.apache.tomcat.websocket.server.WsServerContainer
- All Implemented Interfaces:
ServerContainer
,WebSocketContainer
,BackgroundProcess
Provides a per class loader (i.e. per web application) instance of a ServerContainer. Web application wide defaults
may be configured by setting the following servlet context initialisation parameters to the desired values.
-
Method Summary
Modifier and TypeMethodDescriptionvoid
addEndpoint
(Class<?> pojo) Provides the equivalent ofaddEndpoint(ServerEndpointConfig)
for publishing plain old java objects (POJOs) that have been annotated as WebSocket endpoints.void
Published the provided endpoint implementation at the specified path with the specified configuration.void
closeAuthenticatedSession
(String httpSessionId) void
doUpgrade
(HttpServletRequest request, HttpServletResponse response, ServerEndpointConfig sec, Map<String, String> pathParams) Deprecated.This method will be removed in Apache Tomcat 10.1 onwards.org.apache.tomcat.websocket.server.WsMappingResult
findMapping
(String path) protected InstanceManager
getInstanceManager
(ClassLoader classLoader) Overridden to make it visible to other classes in this package.protected WsWriteTimeout
boolean
protected void
registerSession
(Object key, WsSession wsSession) Overridden to make it visible to other classes in this package.void
setEnforceNoAddAfterHandshake
(boolean enforceNoAddAfterHandshake) protected void
unregisterSession
(Object key, WsSession wsSession) Overridden to make it visible to other classes in this package.void
upgradeHttpToWebSocket
(Object httpServletRequest, Object httpServletResponse, ServerEndpointConfig sec, Map<String, String> pathParameters) Upgrade the HTTP connection represented by theHttpServletRequest
andHttpServletResponse
to the WebSocket protocol and establish a WebSocket connection as per the providedServerEndpointConfig
.Methods inherited from class org.apache.tomcat.websocket.WsWebSocketContainer
backgroundProcess, connectToServer, connectToServer, connectToServer, connectToServer, destroy, getDefaultAsyncSendTimeout, getDefaultMaxBinaryMessageBufferSize, getDefaultMaxSessionIdleTimeout, getDefaultMaxTextMessageBufferSize, getInstalledExtensions, getProcessPeriod, setAsyncSendTimeout, setDefaultMaxBinaryMessageBufferSize, setDefaultMaxSessionIdleTimeout, setDefaultMaxTextMessageBufferSize, setInstanceManager, setProcessPeriod
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface javax.websocket.WebSocketContainer
connectToServer, connectToServer, connectToServer, connectToServer, getDefaultAsyncSendTimeout, getDefaultMaxBinaryMessageBufferSize, getDefaultMaxSessionIdleTimeout, getDefaultMaxTextMessageBufferSize, getInstalledExtensions, setAsyncSendTimeout, setDefaultMaxBinaryMessageBufferSize, setDefaultMaxSessionIdleTimeout, setDefaultMaxTextMessageBufferSize
-
Method Details
-
addEndpoint
Published the provided endpoint implementation at the specified path with the specified configuration.WsServerContainer(ServletContext)
must be called before calling this method.- Specified by:
addEndpoint
in interfaceServerContainer
- Parameters:
sec
- The configuration to use when creating endpoint instances- Throws:
DeploymentException
- if the endpoint cannot be published as requested
-
addEndpoint
Provides the equivalent ofaddEndpoint(ServerEndpointConfig)
for publishing plain old java objects (POJOs) that have been annotated as WebSocket endpoints.- Specified by:
addEndpoint
in interfaceServerContainer
- Parameters:
pojo
- The annotated POJO- Throws:
DeploymentException
-
doUpgrade
@Deprecated public void doUpgrade(HttpServletRequest request, HttpServletResponse response, ServerEndpointConfig sec, Map<String, String> pathParams) throws ServletException, IOExceptionDeprecated.This method will be removed in Apache Tomcat 10.1 onwards. It has been replaced byupgradeHttpToWebSocket(Object, Object, ServerEndpointConfig, Map)
Until the WebSocket specification provides such a mechanism, this Tomcat proprietary method is provided to enable applications to programmatically determine whether or not to upgrade an individual request to WebSocket.Note: This method is not used by Tomcat but is used directly by third-party code and must not be removed.
- Parameters:
request
- The request object to be upgradedresponse
- The response object to be populated with the result of the upgradesec
- The server endpoint to use to process the upgrade requestpathParams
- The path parameters associated with the upgrade request- Throws:
ServletException
- If a configuration error prevents the upgrade from taking placeIOException
- If an I/O error occurs during the upgrade process
-
upgradeHttpToWebSocket
public void upgradeHttpToWebSocket(Object httpServletRequest, Object httpServletResponse, ServerEndpointConfig sec, Map<String, String> pathParameters) throws IOException, DeploymentExceptionUpgrade the HTTP connection represented by theHttpServletRequest
andHttpServletResponse
to the WebSocket protocol and establish a WebSocket connection as per the providedServerEndpointConfig
.This method is primarily intended to be used by frameworks that implement the front-controller pattern. It does not deploy the provided endpoint.
If the WebSocket implementation is not deployed as part of a Jakarta Servlet container, this method will throw an
UnsupportedOperationException
.This method will be part of the Jakarta WebSocket API from version 2.1
- Parameters:
httpServletRequest
- TheHttpServletRequest
to be processed as a WebSocket handshake as per section 4.0 of RFC 6455.httpServletResponse
- TheHttpServletResponse
to be used when processing thehttpServletRequest
as a WebSocket handshake as per section 4.0 of RFC 6455.sec
- The server endpoint configuration to use to configure the WebSocket endpointpathParameters
- Provides a mapping of path parameter names and values, if any, to be used for the WebSocket connection established by the call to this method. If no such mapping is defined, an empty Map must be passed.- Throws:
IllegalStateException
- if the provided request does not meet the requirements of the WebSocket handshakeUnsupportedOperationException
- if the WebSocket implementation is not deployed as part of a Jakarta Servlet containerIOException
- if an I/O error occurs during the establishment of a WebSocket connectionDeploymentException
- if a configuration error prevents the establishment of a WebSocket connection
-
findMapping
-
isEnforceNoAddAfterHandshake
public boolean isEnforceNoAddAfterHandshake() -
setEnforceNoAddAfterHandshake
public void setEnforceNoAddAfterHandshake(boolean enforceNoAddAfterHandshake) -
getTimeout
-
getInstanceManager
Overridden to make it visible to other classes in this package.- Overrides:
getInstanceManager
in classWsWebSocketContainer
-
registerSession
Overridden to make it visible to other classes in this package.- Overrides:
registerSession
in classWsWebSocketContainer
-
unregisterSession
Overridden to make it visible to other classes in this package.- Overrides:
unregisterSession
in classWsWebSocketContainer
-
closeAuthenticatedSession
-