Package io.undertow.websockets.jsr
Class ServerWebSocketContainer
- java.lang.Object
-
- io.undertow.websockets.jsr.ServerWebSocketContainer
-
- All Implemented Interfaces:
jakarta.websocket.server.ServerContainer
,jakarta.websocket.WebSocketContainer
,java.io.Closeable
,java.lang.AutoCloseable
public class ServerWebSocketContainer extends java.lang.Object implements jakarta.websocket.server.ServerContainer, java.io.Closeable
ServerContainer
implementation which allows to deploy endpoints for a server.- Author:
- Norman Maurer
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interface
ServerWebSocketContainer.PauseListener
-
Field Summary
Fields Modifier and Type Field Description static int
DEFAULT_WEB_SOCKET_TIMEOUT_SECONDS
static java.lang.String
TIMEOUT
-
Constructor Summary
Constructors Constructor Description ServerWebSocketContainer(io.undertow.servlet.api.ClassIntrospecter classIntrospecter, java.lang.ClassLoader classLoader, java.util.function.Supplier<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, java.util.function.Supplier<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, java.util.function.Supplier<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<jakarta.websocket.Extension> installedExtensions)
ServerWebSocketContainer(io.undertow.servlet.api.ClassIntrospecter classIntrospecter, java.util.function.Supplier<org.xnio.XnioWorker> xnioWorker, io.undertow.connector.ByteBufferPool bufferPool, java.util.List<io.undertow.servlet.api.ThreadSetupHandler> threadSetupHandlers, boolean dispatchToWorker, boolean clientMode)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addEndpoint(jakarta.websocket.server.ServerEndpointConfig endpoint)
void
addEndpoint(java.lang.Class<?> endpoint)
void
close()
void
close(int waitTime)
jakarta.websocket.Session
connectToServer(jakarta.websocket.Endpoint endpointInstance, jakarta.websocket.ClientEndpointConfig config, io.undertow.websockets.client.WebSocketClient.ConnectionBuilder connectionBuilder)
jakarta.websocket.Session
connectToServer(jakarta.websocket.Endpoint endpointInstance, jakarta.websocket.ClientEndpointConfig config, java.net.URI path)
jakarta.websocket.Session
connectToServer(java.lang.Class<?> aClass, io.undertow.websockets.client.WebSocketClient.ConnectionBuilder connectionBuilder)
jakarta.websocket.Session
connectToServer(java.lang.Class<?> aClass, java.net.URI uri)
jakarta.websocket.Session
connectToServer(java.lang.Class<? extends jakarta.websocket.Endpoint> endpointClass, jakarta.websocket.ClientEndpointConfig cec, java.net.URI path)
jakarta.websocket.Session
connectToServer(java.lang.Object annotatedEndpointInstance, io.undertow.websockets.client.WebSocketClient.ConnectionBuilder connectionBuilder)
jakarta.websocket.Session
connectToServer(java.lang.Object annotatedEndpointInstance, java.net.URI path)
void
deploymentComplete()
void
doUpgrade(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response, jakarta.websocket.server.ServerEndpointConfig sec, java.util.Map<java.lang.String,java.lang.String> pathParams)
io.undertow.connector.ByteBufferPool
getBufferPool()
java.util.List<ConfiguredServerEndpoint>
getConfiguredServerEndpoints()
io.undertow.servlet.spec.ServletContextImpl
getContextToAddFilter()
long
getDefaultAsyncSendTimeout()
int
getDefaultMaxBinaryMessageBufferSize()
long
getDefaultMaxSessionIdleTimeout()
int
getDefaultMaxTextMessageBufferSize()
java.util.Set<jakarta.websocket.Extension>
getInstalledExtensions()
WebSocketReconnectHandler
getWebSocketReconnectHandler()
org.xnio.XnioWorker
getXnioWorker()
void
invokeEndpointMethod(java.lang.Runnable invocation)
Directly invokes an endpoint method, without dispatching to an executorvoid
invokeEndpointMethod(java.util.concurrent.Executor executor, java.lang.Runnable invocation)
Runs a web socket invocation, setting up the threads and dispatching a thread poolboolean
isClosed()
boolean
isDispatchToWorker()
void
pause(ServerWebSocketContainer.PauseListener listener)
Pauses the containervoid
resume()
resumes a paused containervoid
setAsyncSendTimeout(long defaultAsyncSendTimeout)
void
setContextToAddFilter(io.undertow.servlet.spec.ServletContextImpl contextToAddFilter)
void
setDefaultMaxBinaryMessageBufferSize(int defaultMaxBinaryMessageBufferSize)
void
setDefaultMaxSessionIdleTimeout(long timeout)
void
setDefaultMaxTextMessageBufferSize(int defaultMaxTextMessageBufferSize)
void
upgradeHttpToWebSocket(java.lang.Object req, java.lang.Object res, jakarta.websocket.server.ServerEndpointConfig sec, java.util.Map<java.lang.String,java.lang.String> pathParameters)
void
validateDeployment()
-
-
-
Field Detail
-
TIMEOUT
public static final java.lang.String TIMEOUT
- See Also:
- Constant Field Values
-
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, java.util.function.Supplier<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, java.util.function.Supplier<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, java.util.function.Supplier<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, java.util.function.Supplier<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<jakarta.websocket.Extension> installedExtensions)
-
-
Method Detail
-
getDefaultAsyncSendTimeout
public long getDefaultAsyncSendTimeout()
- Specified by:
getDefaultAsyncSendTimeout
in interfacejakarta.websocket.WebSocketContainer
-
setAsyncSendTimeout
public void setAsyncSendTimeout(long defaultAsyncSendTimeout)
- Specified by:
setAsyncSendTimeout
in interfacejakarta.websocket.WebSocketContainer
-
connectToServer
public jakarta.websocket.Session connectToServer(java.lang.Object annotatedEndpointInstance, io.undertow.websockets.client.WebSocketClient.ConnectionBuilder connectionBuilder) throws jakarta.websocket.DeploymentException, java.io.IOException
- Throws:
jakarta.websocket.DeploymentException
java.io.IOException
-
connectToServer
public jakarta.websocket.Session connectToServer(java.lang.Object annotatedEndpointInstance, java.net.URI path) throws jakarta.websocket.DeploymentException, java.io.IOException
- Specified by:
connectToServer
in interfacejakarta.websocket.WebSocketContainer
- Throws:
jakarta.websocket.DeploymentException
java.io.IOException
-
connectToServer
public jakarta.websocket.Session connectToServer(java.lang.Class<?> aClass, io.undertow.websockets.client.WebSocketClient.ConnectionBuilder connectionBuilder) throws jakarta.websocket.DeploymentException, java.io.IOException
- Throws:
jakarta.websocket.DeploymentException
java.io.IOException
-
connectToServer
public jakarta.websocket.Session connectToServer(java.lang.Class<?> aClass, java.net.URI uri) throws jakarta.websocket.DeploymentException, java.io.IOException
- Specified by:
connectToServer
in interfacejakarta.websocket.WebSocketContainer
- Throws:
jakarta.websocket.DeploymentException
java.io.IOException
-
connectToServer
public jakarta.websocket.Session connectToServer(jakarta.websocket.Endpoint endpointInstance, jakarta.websocket.ClientEndpointConfig config, java.net.URI path) throws jakarta.websocket.DeploymentException, java.io.IOException
- Specified by:
connectToServer
in interfacejakarta.websocket.WebSocketContainer
- Throws:
jakarta.websocket.DeploymentException
java.io.IOException
-
connectToServer
public jakarta.websocket.Session connectToServer(jakarta.websocket.Endpoint endpointInstance, jakarta.websocket.ClientEndpointConfig config, io.undertow.websockets.client.WebSocketClient.ConnectionBuilder connectionBuilder) throws jakarta.websocket.DeploymentException, java.io.IOException
- Throws:
jakarta.websocket.DeploymentException
java.io.IOException
-
connectToServer
public jakarta.websocket.Session connectToServer(java.lang.Class<? extends jakarta.websocket.Endpoint> endpointClass, jakarta.websocket.ClientEndpointConfig cec, java.net.URI path) throws jakarta.websocket.DeploymentException, java.io.IOException
- Specified by:
connectToServer
in interfacejakarta.websocket.WebSocketContainer
- Throws:
jakarta.websocket.DeploymentException
java.io.IOException
-
upgradeHttpToWebSocket
public void upgradeHttpToWebSocket(java.lang.Object req, java.lang.Object res, jakarta.websocket.server.ServerEndpointConfig sec, java.util.Map<java.lang.String,java.lang.String> pathParameters) throws java.io.IOException, jakarta.websocket.DeploymentException
- Specified by:
upgradeHttpToWebSocket
in interfacejakarta.websocket.server.ServerContainer
- Throws:
java.io.IOException
jakarta.websocket.DeploymentException
-
doUpgrade
public void doUpgrade(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response, jakarta.websocket.server.ServerEndpointConfig sec, java.util.Map<java.lang.String,java.lang.String> pathParams) throws jakarta.servlet.ServletException, java.io.IOException
- Throws:
jakarta.servlet.ServletException
java.io.IOException
-
getDefaultMaxSessionIdleTimeout
public long getDefaultMaxSessionIdleTimeout()
- Specified by:
getDefaultMaxSessionIdleTimeout
in interfacejakarta.websocket.WebSocketContainer
-
setDefaultMaxSessionIdleTimeout
public void setDefaultMaxSessionIdleTimeout(long timeout)
- Specified by:
setDefaultMaxSessionIdleTimeout
in interfacejakarta.websocket.WebSocketContainer
-
getDefaultMaxBinaryMessageBufferSize
public int getDefaultMaxBinaryMessageBufferSize()
- Specified by:
getDefaultMaxBinaryMessageBufferSize
in interfacejakarta.websocket.WebSocketContainer
-
setDefaultMaxBinaryMessageBufferSize
public void setDefaultMaxBinaryMessageBufferSize(int defaultMaxBinaryMessageBufferSize)
- Specified by:
setDefaultMaxBinaryMessageBufferSize
in interfacejakarta.websocket.WebSocketContainer
-
getDefaultMaxTextMessageBufferSize
public int getDefaultMaxTextMessageBufferSize()
- Specified by:
getDefaultMaxTextMessageBufferSize
in interfacejakarta.websocket.WebSocketContainer
-
setDefaultMaxTextMessageBufferSize
public void setDefaultMaxTextMessageBufferSize(int defaultMaxTextMessageBufferSize)
- Specified by:
setDefaultMaxTextMessageBufferSize
in interfacejakarta.websocket.WebSocketContainer
-
getInstalledExtensions
public java.util.Set<jakarta.websocket.Extension> getInstalledExtensions()
- Specified by:
getInstalledExtensions
in interfacejakarta.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 poolUnfortunately 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 jakarta.websocket.DeploymentException
- Specified by:
addEndpoint
in interfacejakarta.websocket.server.ServerContainer
- Throws:
jakarta.websocket.DeploymentException
-
addEndpoint
public void addEndpoint(jakarta.websocket.server.ServerEndpointConfig endpoint) throws jakarta.websocket.DeploymentException
- Specified by:
addEndpoint
in interfacejakarta.websocket.server.ServerContainer
- Throws:
jakarta.websocket.DeploymentException
-
validateDeployment
public void validateDeployment()
-
deploymentComplete
public void deploymentComplete()
-
getConfiguredServerEndpoints
public java.util.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 interfacejava.lang.AutoCloseable
- Specified by:
close
in interfacejava.io.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()
-
-