Class ServerWebSocketContainer

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable, javax.websocket.server.ServerContainer, javax.websocket.WebSocketContainer

    public class ServerWebSocketContainer
    extends java.lang.Object
    implements javax.websocket.server.ServerContainer, java.io.Closeable
    ServerContainer implementation which allows to deploy endpoints for a server.
    Author:
    Norman Maurer
    • Constructor Summary

      Constructors 
      Constructor Description
      ServerWebSocketContainer​(io.undertow.servlet.api.ClassIntrospecter classIntrospecter, java.lang.ClassLoader classLoader, org.xnio.XnioWorker xnioWorker, io.undertow.connector.ByteBufferPool bufferPool, java.util.List<io.undertow.servlet.api.ThreadSetupHandler> threadSetupHandlers, boolean dispatchToWorker)  
      ServerWebSocketContainer​(io.undertow.servlet.api.ClassIntrospecter classIntrospecter, java.lang.ClassLoader classLoader, org.xnio.XnioWorker xnioWorker, io.undertow.connector.ByteBufferPool bufferPool, java.util.List<io.undertow.servlet.api.ThreadSetupHandler> threadSetupHandlers, boolean dispatchToWorker, java.net.InetSocketAddress clientBindAddress, WebSocketReconnectHandler reconnectHandler)  
      ServerWebSocketContainer​(io.undertow.servlet.api.ClassIntrospecter classIntrospecter, java.lang.ClassLoader classLoader, org.xnio.XnioWorker xnioWorker, io.undertow.connector.ByteBufferPool bufferPool, java.util.List<io.undertow.servlet.api.ThreadSetupHandler> threadSetupHandlers, boolean dispatchToWorker, java.net.InetSocketAddress clientBindAddress, WebSocketReconnectHandler reconnectHandler, java.util.List<javax.websocket.Extension> installedExtensions)  
      ServerWebSocketContainer​(io.undertow.servlet.api.ClassIntrospecter classIntrospecter, org.xnio.XnioWorker xnioWorker, io.undertow.connector.ByteBufferPool bufferPool, java.util.List<io.undertow.servlet.api.ThreadSetupHandler> threadSetupHandlers, boolean dispatchToWorker, boolean clientMode)  
    • Field Detail

      • DEFAULT_WEB_SOCKET_TIMEOUT_SECONDS

        public static final int DEFAULT_WEB_SOCKET_TIMEOUT_SECONDS
        See Also:
        Constant Field Values
    • Constructor Detail

      • ServerWebSocketContainer

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

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

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

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

      • 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​(java.lang.Object annotatedEndpointInstance,
                                                       io.undertow.websockets.client.WebSocketClient.ConnectionBuilder connectionBuilder)
                                                throws javax.websocket.DeploymentException,
                                                       java.io.IOException
        Throws:
        javax.websocket.DeploymentException
        java.io.IOException
      • connectToServer

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

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

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

        public javax.websocket.Session connectToServer​(javax.websocket.Endpoint endpointInstance,
                                                       javax.websocket.ClientEndpointConfig config,
                                                       java.net.URI path)
                                                throws javax.websocket.DeploymentException,
                                                       java.io.IOException
        Specified by:
        connectToServer in interface javax.websocket.WebSocketContainer
        Throws:
        javax.websocket.DeploymentException
        java.io.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,
                                                       java.io.IOException
        Throws:
        javax.websocket.DeploymentException
        java.io.IOException
      • connectToServer

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

        public void doUpgrade​(javax.servlet.http.HttpServletRequest request,
                              javax.servlet.http.HttpServletResponse response,
                              javax.websocket.server.ServerEndpointConfig sec,
                              java.util.Map<java.lang.String,​java.lang.String> pathParams)
                       throws javax.servlet.ServletException,
                              java.io.IOException
        Throws:
        javax.servlet.ServletException
        java.io.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 java.util.Set<javax.websocket.Extension> getInstalledExtensions()
        Specified by:
        getInstalledExtensions in interface javax.websocket.WebSocketContainer
      • invokeEndpointMethod

        public void invokeEndpointMethod​(java.util.concurrent.Executor executor,
                                         java.lang.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​(java.lang.Runnable invocation)
        Directly invokes an endpoint method, without dispatching to an executor
        Parameters:
        invocation - The invocation
      • addEndpoint

        public void addEndpoint​(java.lang.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
      • deploymentComplete

        public void deploymentComplete()
      • 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 java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
      • getBufferPool

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

        public org.xnio.XnioWorker getXnioWorker()
      • resume

        public void resume()
        resumes a paused container
      • isClosed

        public boolean isClosed()
      • isDispatchToWorker

        public boolean isDispatchToWorker()