Class ServerWebSocketContainer

java.lang.Object
io.undertow.websockets.jsr.ServerWebSocketContainer
All Implemented Interfaces:
Closeable, AutoCloseable, javax.websocket.server.ServerContainer, javax.websocket.WebSocketContainer

public class ServerWebSocketContainer extends Object implements javax.websocket.server.ServerContainer, Closeable
ServerContainer implementation which allows to deploy endpoints for a server.
Author:
Norman Maurer
  • Field Details

  • Constructor Details

    • ServerWebSocketContainer

      public ServerWebSocketContainer(io.undertow.servlet.api.ClassIntrospecter classIntrospecter, Supplier<org.xnio.XnioWorker> xnioWorker, io.undertow.connector.ByteBufferPool bufferPool, List<io.undertow.servlet.api.ThreadSetupHandler> threadSetupHandlers, boolean dispatchToWorker, boolean clientMode)
    • ServerWebSocketContainer

      public ServerWebSocketContainer(io.undertow.servlet.api.ClassIntrospecter classIntrospecter, ClassLoader classLoader, Supplier<org.xnio.XnioWorker> xnioWorker, io.undertow.connector.ByteBufferPool bufferPool, List<io.undertow.servlet.api.ThreadSetupHandler> threadSetupHandlers, boolean dispatchToWorker)
    • ServerWebSocketContainer

      public ServerWebSocketContainer(io.undertow.servlet.api.ClassIntrospecter classIntrospecter, ClassLoader classLoader, Supplier<org.xnio.XnioWorker> xnioWorker, io.undertow.connector.ByteBufferPool bufferPool, List<io.undertow.servlet.api.ThreadSetupHandler> threadSetupHandlers, boolean dispatchToWorker, InetSocketAddress clientBindAddress, WebSocketReconnectHandler reconnectHandler)
    • ServerWebSocketContainer

      public ServerWebSocketContainer(io.undertow.servlet.api.ClassIntrospecter classIntrospecter, ClassLoader classLoader, Supplier<org.xnio.XnioWorker> xnioWorker, io.undertow.connector.ByteBufferPool bufferPool, List<io.undertow.servlet.api.ThreadSetupHandler> threadSetupHandlers, boolean dispatchToWorker, InetSocketAddress clientBindAddress, WebSocketReconnectHandler reconnectHandler, List<javax.websocket.Extension> installedExtensions)
  • Method Details

    • getDefaultAsyncSendTimeout

      public long getDefaultAsyncSendTimeout()
      Specified by:
      getDefaultAsyncSendTimeout in interface javax.websocket.WebSocketContainer
    • setAsyncSendTimeout

      public void setAsyncSendTimeout(long defaultAsyncSendTimeout)
      Specified by:
      setAsyncSendTimeout in interface javax.websocket.WebSocketContainer
    • connectToServer

      public javax.websocket.Session connectToServer(Object annotatedEndpointInstance, io.undertow.websockets.client.WebSocketClient.ConnectionBuilder connectionBuilder) throws javax.websocket.DeploymentException, IOException
      Throws:
      javax.websocket.DeploymentException
      IOException
    • connectToServer

      public javax.websocket.Session connectToServer(Object annotatedEndpointInstance, URI path) throws javax.websocket.DeploymentException, IOException
      Specified by:
      connectToServer in interface javax.websocket.WebSocketContainer
      Throws:
      javax.websocket.DeploymentException
      IOException
    • connectToServer

      public javax.websocket.Session connectToServer(Class<?> aClass, io.undertow.websockets.client.WebSocketClient.ConnectionBuilder connectionBuilder) throws javax.websocket.DeploymentException, IOException
      Throws:
      javax.websocket.DeploymentException
      IOException
    • connectToServer

      public javax.websocket.Session connectToServer(Class<?> aClass, URI uri) throws javax.websocket.DeploymentException, IOException
      Specified by:
      connectToServer in interface javax.websocket.WebSocketContainer
      Throws:
      javax.websocket.DeploymentException
      IOException
    • connectToServer

      public javax.websocket.Session connectToServer(javax.websocket.Endpoint endpointInstance, javax.websocket.ClientEndpointConfig config, URI path) throws javax.websocket.DeploymentException, IOException
      Specified by:
      connectToServer in interface javax.websocket.WebSocketContainer
      Throws:
      javax.websocket.DeploymentException
      IOException
    • connectToServer

      public javax.websocket.Session connectToServer(javax.websocket.Endpoint endpointInstance, javax.websocket.ClientEndpointConfig config, io.undertow.websockets.client.WebSocketClient.ConnectionBuilder connectionBuilder) throws javax.websocket.DeploymentException, IOException
      Throws:
      javax.websocket.DeploymentException
      IOException
    • connectToServer

      public javax.websocket.Session connectToServer(Class<? extends javax.websocket.Endpoint> endpointClass, javax.websocket.ClientEndpointConfig cec, URI path) throws javax.websocket.DeploymentException, IOException
      Specified by:
      connectToServer in interface javax.websocket.WebSocketContainer
      Throws:
      javax.websocket.DeploymentException
      IOException
    • doUpgrade

      public void doUpgrade(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, javax.websocket.server.ServerEndpointConfig sec, Map<String,String> pathParams) throws javax.servlet.ServletException, IOException
      Throws:
      javax.servlet.ServletException
      IOException
    • getDefaultMaxSessionIdleTimeout

      public long getDefaultMaxSessionIdleTimeout()
      Specified by:
      getDefaultMaxSessionIdleTimeout in interface javax.websocket.WebSocketContainer
    • setDefaultMaxSessionIdleTimeout

      public void setDefaultMaxSessionIdleTimeout(long timeout)
      Specified by:
      setDefaultMaxSessionIdleTimeout in interface javax.websocket.WebSocketContainer
    • getDefaultMaxBinaryMessageBufferSize

      public int getDefaultMaxBinaryMessageBufferSize()
      Specified by:
      getDefaultMaxBinaryMessageBufferSize in interface javax.websocket.WebSocketContainer
    • setDefaultMaxBinaryMessageBufferSize

      public void setDefaultMaxBinaryMessageBufferSize(int defaultMaxBinaryMessageBufferSize)
      Specified by:
      setDefaultMaxBinaryMessageBufferSize in interface javax.websocket.WebSocketContainer
    • getDefaultMaxTextMessageBufferSize

      public int getDefaultMaxTextMessageBufferSize()
      Specified by:
      getDefaultMaxTextMessageBufferSize in interface javax.websocket.WebSocketContainer
    • setDefaultMaxTextMessageBufferSize

      public void setDefaultMaxTextMessageBufferSize(int defaultMaxTextMessageBufferSize)
      Specified by:
      setDefaultMaxTextMessageBufferSize in interface javax.websocket.WebSocketContainer
    • getInstalledExtensions

      public Set<javax.websocket.Extension> getInstalledExtensions()
      Specified by:
      getInstalledExtensions in interface javax.websocket.WebSocketContainer
    • invokeEndpointMethod

      public void invokeEndpointMethod(Executor executor, Runnable invocation)
      Runs a web socket invocation, setting up the threads and dispatching a thread pool

      Unfortunately we need to dispatch to a thread pool, because there is a good chance that the endpoint will use blocking IO methods. We suspend recieves while this is in progress, to make sure that we do not have multiple methods invoked at once.

      Parameters:
      invocation - The task to run
    • invokeEndpointMethod

      public void invokeEndpointMethod(Runnable invocation)
      Directly invokes an endpoint method, without dispatching to an executor
      Parameters:
      invocation - The invocation
    • addEndpoint

      public void addEndpoint(Class<?> endpoint) throws javax.websocket.DeploymentException
      Specified by:
      addEndpoint in interface javax.websocket.server.ServerContainer
      Throws:
      javax.websocket.DeploymentException
    • addEndpoint

      public void addEndpoint(javax.websocket.server.ServerEndpointConfig endpoint) throws javax.websocket.DeploymentException
      Specified by:
      addEndpoint in interface javax.websocket.server.ServerContainer
      Throws:
      javax.websocket.DeploymentException
    • validateDeployment

      public void validateDeployment()
    • deploymentComplete

      public void deploymentComplete()
    • getConfiguredServerEndpoints

      public List<ConfiguredServerEndpoint> getConfiguredServerEndpoints()
    • getContextToAddFilter

      public io.undertow.servlet.spec.ServletContextImpl getContextToAddFilter()
    • setContextToAddFilter

      public void setContextToAddFilter(io.undertow.servlet.spec.ServletContextImpl contextToAddFilter)
    • close

      public void close(int waitTime)
    • close

      public void close()
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
    • getBufferPool

      public io.undertow.connector.ByteBufferPool getBufferPool()
    • getXnioWorker

      public org.xnio.XnioWorker getXnioWorker()
    • pause

      public void pause(ServerWebSocketContainer.PauseListener listener)
      Pauses the container
      Parameters:
      listener -
    • resume

      public void resume()
      resumes a paused container
    • getWebSocketReconnectHandler

      public WebSocketReconnectHandler getWebSocketReconnectHandler()
    • isClosed

      public boolean isClosed()
    • isDispatchToWorker

      public boolean isDispatchToWorker()