Class WsServerContainer

java.lang.Object
org.apache.tomcat.websocket.WsWebSocketContainer
org.apache.tomcat.websocket.server.WsServerContainer
All Implemented Interfaces:
ServerContainer, WebSocketContainer, BackgroundProcess

public class WsServerContainer extends WsWebSocketContainer implements ServerContainer
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 Details

    • addEndpoint

      public void addEndpoint(ServerEndpointConfig sec) throws DeploymentException
      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 interface ServerContainer
      Parameters:
      sec - The configuration to use when creating endpoint instances
      Throws:
      DeploymentException - if the endpoint cannot be published as requested
    • addEndpoint

      public void addEndpoint(Class<?> pojo) throws DeploymentException
      Provides the equivalent of addEndpoint(ServerEndpointConfig) for publishing plain old java objects (POJOs) that have been annotated as WebSocket endpoints.
      Specified by:
      addEndpoint in interface ServerContainer
      Parameters:
      pojo - The annotated POJO
      Throws:
      DeploymentException
    • upgradeHttpToWebSocket

      public void upgradeHttpToWebSocket(Object httpServletRequest, Object httpServletResponse, ServerEndpointConfig sec, Map<String,String> pathParameters) throws IOException, DeploymentException
      Description copied from interface: jakarta.websocket.server.ServerContainer
      Upgrade the HTTP connection represented by the HttpServletRequest and HttpServletResponse to the WebSocket protocol and establish a WebSocket connection as per the provided ServerEndpointConfig.

      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.

      Specified by:
      upgradeHttpToWebSocket in interface ServerContainer
      Parameters:
      httpServletRequest - The HttpServletRequest to be processed as a WebSocket handshake as per section 4.0 of RFC 6455.
      httpServletResponse - The HttpServletResponse to be used when processing the httpServletRequest as a WebSocket handshake as per section 4.0 of RFC 6455.
      sec - The server endpoint configuration to use to configure the WebSocket endpoint
      pathParameters - 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:
      IOException - if an I/O error occurs during the establishment of a WebSocket connection
      DeploymentException - if a configuration error prevents the establishment of a WebSocket connection
    • findMapping

      public org.apache.tomcat.websocket.server.WsMappingResult findMapping(String path)
    • getTimeout

      protected WsWriteTimeout getTimeout()
    • getInstanceManager

      protected InstanceManager getInstanceManager(ClassLoader classLoader)
      Overridden to make it visible to other classes in this package.
      Overrides:
      getInstanceManager in class WsWebSocketContainer
    • registerSession

      protected void registerSession(Object key, WsSession wsSession)
      Overridden to make it visible to other classes in this package.
      Overrides:
      registerSession in class WsWebSocketContainer
    • unregisterSession

      protected void unregisterSession(Object key, WsSession wsSession)
      Overridden to make it visible to other classes in this package.
      Overrides:
      unregisterSession in class WsWebSocketContainer
    • closeAuthenticatedSession

      public void closeAuthenticatedSession(String httpSessionId)