public class WebSocketHttpRequestHandler extends java.lang.Object implements HttpRequestHandler, Lifecycle, ServletContextAware
HttpRequestHandler
for processing WebSocket handshake requests.
This is the main class to use when configuring a server WebSocket at a specific URL.
It is a very thin wrapper around a WebSocketHandler
and a HandshakeHandler
,
also adapting the HttpServletRequest
and HttpServletResponse
to
ServerHttpRequest
and ServerHttpResponse
, respectively.
Modifier and Type | Field and Description |
---|---|
private HandshakeHandler |
handshakeHandler |
private java.util.List<HandshakeInterceptor> |
interceptors |
private static Log |
logger |
private boolean |
running |
private WebSocketHandler |
wsHandler |
Constructor and Description |
---|
WebSocketHttpRequestHandler(WebSocketHandler wsHandler) |
WebSocketHttpRequestHandler(WebSocketHandler wsHandler,
HandshakeHandler handshakeHandler) |
Modifier and Type | Method and Description |
---|---|
HandshakeHandler |
getHandshakeHandler()
Return the HandshakeHandler.
|
java.util.List<HandshakeInterceptor> |
getHandshakeInterceptors()
Return the configured WebSocket handshake request interceptors.
|
WebSocketHandler |
getWebSocketHandler()
Return the WebSocketHandler.
|
void |
handleRequest(HttpServletRequest servletRequest,
HttpServletResponse servletResponse)
Process the given request, generating a response.
|
boolean |
isRunning()
Check whether this component is currently running.
|
void |
setHandshakeInterceptors(java.util.List<HandshakeInterceptor> interceptors)
Configure one or more WebSocket handshake request interceptors.
|
void |
setServletContext(ServletContext servletContext)
Set the
ServletContext that this object runs in. |
void |
start()
Start this component.
|
void |
stop()
Stop this component, typically in a synchronous fashion, such that the component is
fully stopped upon return of this method.
|
private static final Log logger
private final WebSocketHandler wsHandler
private final HandshakeHandler handshakeHandler
private final java.util.List<HandshakeInterceptor> interceptors
private volatile boolean running
public WebSocketHttpRequestHandler(WebSocketHandler wsHandler)
public WebSocketHttpRequestHandler(WebSocketHandler wsHandler, HandshakeHandler handshakeHandler)
public WebSocketHandler getWebSocketHandler()
public HandshakeHandler getHandshakeHandler()
public void setHandshakeInterceptors(@Nullable java.util.List<HandshakeInterceptor> interceptors)
public java.util.List<HandshakeInterceptor> getHandshakeInterceptors()
public void setServletContext(ServletContext servletContext)
ServletContextAware
ServletContext
that this object runs in.
Invoked after population of normal bean properties but before an init
callback like InitializingBean's afterPropertiesSet
or a
custom init-method. Invoked after ApplicationContextAware's
setApplicationContext
.
setServletContext
in interface ServletContextAware
servletContext
- the ServletContext object to be used by this objectInitializingBean.afterPropertiesSet()
,
ApplicationContextAware.setApplicationContext(org.springframework.context.ApplicationContext)
public void start()
Lifecycle
Should not throw an exception if the component is already running.
In the case of a container, this will propagate the start signal to all components that apply.
start
in interface Lifecycle
SmartLifecycle.isAutoStartup()
public void stop()
Lifecycle
SmartLifecycle
and its stop(Runnable)
variant when asynchronous stop behavior is necessary.
Note that this stop notification is not guaranteed to come before destruction:
On regular shutdown, Lifecycle
beans will first receive a stop notification
before the general destruction callbacks are being propagated; however, on hot
refresh during a context's lifetime or on aborted refresh attempts, a given bean's
destroy method will be called without any consideration of stop signals upfront.
Should not throw an exception if the component is not running (not started yet).
In the case of a container, this will propagate the stop signal to all components that apply.
stop
in interface Lifecycle
SmartLifecycle.stop(Runnable)
,
DisposableBean.destroy()
public boolean isRunning()
Lifecycle
In the case of a container, this will return true
only if all
components that apply are currently running.
public void handleRequest(HttpServletRequest servletRequest, HttpServletResponse servletResponse) throws ServletException, java.io.IOException
HttpRequestHandler
handleRequest
in interface HttpRequestHandler
servletRequest
- current HTTP requestservletResponse
- current HTTP responseServletException
- in case of general errorsjava.io.IOException
- in case of I/O errors