Package io.undertow.websockets.jsr
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
-
Nested Class Summary
Nested Classes -
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionServerWebSocketContainer
(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
(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
(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) 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) -
Method Summary
Modifier and TypeMethodDescriptionvoid
addEndpoint
(Class<?> endpoint) void
addEndpoint
(javax.websocket.server.ServerEndpointConfig endpoint) void
close()
void
close
(int waitTime) javax.websocket.Session
connectToServer
(Class<?> aClass, io.undertow.websockets.client.WebSocketClient.ConnectionBuilder connectionBuilder) javax.websocket.Session
connectToServer
(Class<?> aClass, URI uri) javax.websocket.Session
connectToServer
(Class<? extends javax.websocket.Endpoint> endpointClass, javax.websocket.ClientEndpointConfig cec, URI path) javax.websocket.Session
connectToServer
(Object annotatedEndpointInstance, io.undertow.websockets.client.WebSocketClient.ConnectionBuilder connectionBuilder) javax.websocket.Session
connectToServer
(Object annotatedEndpointInstance, URI path) javax.websocket.Session
connectToServer
(javax.websocket.Endpoint endpointInstance, javax.websocket.ClientEndpointConfig config, io.undertow.websockets.client.WebSocketClient.ConnectionBuilder connectionBuilder) javax.websocket.Session
connectToServer
(javax.websocket.Endpoint endpointInstance, javax.websocket.ClientEndpointConfig config, URI path) void
void
doUpgrade
(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, javax.websocket.server.ServerEndpointConfig sec, Map<String, String> pathParams) io.undertow.connector.ByteBufferPool
io.undertow.servlet.spec.ServletContextImpl
long
int
long
int
Set<javax.websocket.Extension>
org.xnio.XnioWorker
void
invokeEndpointMethod
(Runnable invocation) Directly invokes an endpoint method, without dispatching to an executorvoid
invokeEndpointMethod
(Executor executor, Runnable invocation) Runs a web socket invocation, setting up the threads and dispatching a thread poolboolean
isClosed()
boolean
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
-
Field Details
-
TIMEOUT
- See Also:
-
DEFAULT_WEB_SOCKET_TIMEOUT_SECONDS
public static final int DEFAULT_WEB_SOCKET_TIMEOUT_SECONDS- See Also:
-
-
Constructor Details
-
ServerWebSocketContainer
-
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 interfacejavax.websocket.WebSocketContainer
-
setAsyncSendTimeout
public void setAsyncSendTimeout(long defaultAsyncSendTimeout) - Specified by:
setAsyncSendTimeout
in interfacejavax.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 interfacejavax.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 interfacejavax.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 interfacejavax.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 interfacejavax.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 interfacejavax.websocket.WebSocketContainer
-
setDefaultMaxSessionIdleTimeout
public void setDefaultMaxSessionIdleTimeout(long timeout) - Specified by:
setDefaultMaxSessionIdleTimeout
in interfacejavax.websocket.WebSocketContainer
-
getDefaultMaxBinaryMessageBufferSize
public int getDefaultMaxBinaryMessageBufferSize()- Specified by:
getDefaultMaxBinaryMessageBufferSize
in interfacejavax.websocket.WebSocketContainer
-
setDefaultMaxBinaryMessageBufferSize
public void setDefaultMaxBinaryMessageBufferSize(int defaultMaxBinaryMessageBufferSize) - Specified by:
setDefaultMaxBinaryMessageBufferSize
in interfacejavax.websocket.WebSocketContainer
-
getDefaultMaxTextMessageBufferSize
public int getDefaultMaxTextMessageBufferSize()- Specified by:
getDefaultMaxTextMessageBufferSize
in interfacejavax.websocket.WebSocketContainer
-
setDefaultMaxTextMessageBufferSize
public void setDefaultMaxTextMessageBufferSize(int defaultMaxTextMessageBufferSize) - Specified by:
setDefaultMaxTextMessageBufferSize
in interfacejavax.websocket.WebSocketContainer
-
getInstalledExtensions
- Specified by:
getInstalledExtensions
in interfacejavax.websocket.WebSocketContainer
-
invokeEndpointMethod
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
Directly invokes an endpoint method, without dispatching to an executor- Parameters:
invocation
- The invocation
-
addEndpoint
- Specified by:
addEndpoint
in interfacejavax.websocket.server.ServerContainer
- Throws:
javax.websocket.DeploymentException
-
addEndpoint
public void addEndpoint(javax.websocket.server.ServerEndpointConfig endpoint) throws javax.websocket.DeploymentException - Specified by:
addEndpoint
in interfacejavax.websocket.server.ServerContainer
- Throws:
javax.websocket.DeploymentException
-
validateDeployment
public void validateDeployment() -
deploymentComplete
public void deploymentComplete() -
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 interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
-
getBufferPool
public io.undertow.connector.ByteBufferPool getBufferPool() -
getXnioWorker
public org.xnio.XnioWorker getXnioWorker() -
pause
Pauses the container- Parameters:
listener
-
-
resume
public void resume()resumes a paused container -
getWebSocketReconnectHandler
-
isClosed
public boolean isClosed() -
isDispatchToWorker
public boolean isDispatchToWorker()
-