Class WebSocketUpgradeFilter
- All Implemented Interfaces:
javax.servlet.Filter,org.eclipse.jetty.util.component.Dumpable,MappedWebSocketCreator
Inline Servlet Filter to capture WebSocket upgrade requests and perform path mappings to WebSocketCreator objects.
Embedded Jetty Users should initialize this filter using the configure(ServletContextHandler) method.
If you also want to establish some mappings of PathSpec to WebSocketCreator against this WebSocketUpgradeFilter
then these actions must occur during the Servlet Initialization Phase.
A convenience method is provided with NativeWebSocketServletContainerInitializer.configure(ServletContextHandler, NativeWebSocketServletContainerInitializer.Configurator)
to create a lambda that will execute during the appropriate Servlet Initialization Phase.
ServletContextHandler contextHandler = new ServletContextHandler(...);
WebSocketUpgradeFilter.configure(contextHandler);
NativeWebSocketServletContainerInitializer.configure(contextHandler, (context, container) -> {
container.getPolicy().setMaxTextMessageBufferSize(65535);
container.getPolicy().setInputBufferSize(16384);
container.addMapping("/echo", ServerEchoSocket.class);
container.addMapping(new ServletPathSpec("/api"), (req, resp) -> new ServerApiSocket());
});
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.eclipse.jetty.util.component.Dumpable
org.eclipse.jetty.util.component.Dumpable.DumpableContainer -
Field Summary
FieldsFields inherited from interface org.eclipse.jetty.util.component.Dumpable
KEY -
Constructor Summary
ConstructorsConstructorDescriptionWebSocketUpgradeFilter(NativeWebSocketConfiguration configuration) Deprecated.Deprecated. -
Method Summary
Modifier and TypeMethodDescriptionvoidaddMapping(String spec, WebSocketCreator creator) Add Mapping to underlyingNativeWebSocketConfigurationvoidaddMapping(PathSpec spec, WebSocketCreator creator) Add Mapping to underlyingNativeWebSocketConfigurationvoidaddMapping(PathSpec spec, WebSocketCreator creator) Deprecated.static WebSocketUpgradeFilterconfigure(ServletContextHandler context) Configure the default WebSocketUpgradeFilter.static WebSocketUpgradeFilterconfigureContext(javax.servlet.ServletContext context) Deprecated.useconfigureContext(ServletContextHandler)insteadstatic WebSocketUpgradeFilterconfigureContext(ServletContextHandler context) Deprecated.useconfigure(ServletContextHandler)insteadvoiddestroy()voiddoFilter(javax.servlet.ServletRequest request, javax.servlet.ServletResponse response, javax.servlet.FilterChain chain) dump()voiddump(Appendable out, String indent) getMapping(String target) /** Returns the creator for the given path spec.voidinit(javax.servlet.FilterConfig config) booleanremoveMapping(String spec) Remove Mapping to underlyingNativeWebSocketConfigurationvoidsetToAttribute(javax.servlet.ServletContext context, String key) toString()Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.eclipse.jetty.util.component.Dumpable
dumpSelf
-
Field Details
-
CONTEXT_ATTRIBUTE_KEY
- See Also:
-
CONFIG_ATTRIBUTE_KEY
- See Also:
-
ATTR_KEY
-
-
Constructor Details
-
WebSocketUpgradeFilter
public WebSocketUpgradeFilter() -
WebSocketUpgradeFilter
Deprecated. -
WebSocketUpgradeFilter
Deprecated.
-
-
Method Details
-
configure
public static WebSocketUpgradeFilter configure(ServletContextHandler context) throws javax.servlet.ServletException Configure the default WebSocketUpgradeFilter.This will return the default
WebSocketUpgradeFilteron the providedServletContextHandler, creating the filter if necessary.The default
WebSocketUpgradeFilteris also available via theServletContextattribute namedorg.eclipse.jetty.websocket.server.WebSocketUpgradeFilter- Parameters:
context- theServletContextHandlerto use- Returns:
- the configured default
WebSocketUpgradeFilterinstance, use this reference later in your Servlet Initialization Phase to establish mappings of websockets. - Throws:
javax.servlet.ServletException- if the filer cannot be configured
-
configureContext
@Deprecated public static WebSocketUpgradeFilter configureContext(ServletContextHandler context) throws javax.servlet.ServletException Deprecated.useconfigure(ServletContextHandler)instead- Parameters:
context- theServletContextHandlerto use- Returns:
- a configured
WebSocketUpgradeFilterinstance - Throws:
javax.servlet.ServletException- if the filer cannot be configured
-
configureContext
@Deprecated public static WebSocketUpgradeFilter configureContext(javax.servlet.ServletContext context) throws javax.servlet.ServletException Deprecated.useconfigureContext(ServletContextHandler)instead- Parameters:
context- the ServletContext to use- Returns:
- a configured
WebSocketUpgradeFilterinstance - Throws:
javax.servlet.ServletException- if the filer cannot be configured
-
addMapping
Add Mapping to underlying
NativeWebSocketConfigurationIMPORTANT: Can only be used during Servlet Initialization phase.
Embedded Jetty users, consider using
NativeWebSocketServletContainerInitializer.configure(ServletContextHandler, NativeWebSocketServletContainerInitializer.Configurator)instead to define mappings early that happen during the Servlet Initialization phase.- Specified by:
addMappingin interfaceMappedWebSocketCreator- Parameters:
spec- the path spec to usecreator- the creator for the mapping- See Also:
-
addMapping
Deprecated.Description copied from interface:MappedWebSocketCreatorAdd a mapping.- Specified by:
addMappingin interfaceMappedWebSocketCreator- Parameters:
spec- the path spec to usecreator- the creator for the mapping
-
addMapping
Add Mapping to underlying
NativeWebSocketConfigurationIMPORTANT: Can only be used during Servlet Initialization phase.
Embedded Jetty users, consider using
NativeWebSocketServletContainerInitializer.configure(ServletContextHandler, NativeWebSocketServletContainerInitializer.Configurator)instead to define mappings early that happen during the Servlet Initialization phase.- Specified by:
addMappingin interfaceMappedWebSocketCreator- Parameters:
spec- the path spec to use.creator- the websocket creator for this specific mapping- See Also:
-
removeMapping
Remove Mapping to underlying
NativeWebSocketConfigurationIMPORTANT: Can only be used during Servlet Initialization phase.
- Specified by:
removeMappingin interfaceMappedWebSocketCreator- Parameters:
spec- the path spec to remove (using the same spec syntax as seen inMappedWebSocketCreator.addMapping(String, WebSocketCreator))- Returns:
- true if underlying mapping were altered, false otherwise
- See Also:
-
destroy
public void destroy()- Specified by:
destroyin interfacejavax.servlet.Filter
-
doFilter
public void doFilter(javax.servlet.ServletRequest request, javax.servlet.ServletResponse response, javax.servlet.FilterChain chain) throws IOException, javax.servlet.ServletException - Specified by:
doFilterin interfacejavax.servlet.Filter- Throws:
IOExceptionjavax.servlet.ServletException
-
dump
- Specified by:
dumpin interfaceorg.eclipse.jetty.util.component.Dumpable
-
dump
- Specified by:
dumpin interfaceorg.eclipse.jetty.util.component.Dumpable- Throws:
IOException
-
getFactory
-
getConfiguration
@ManagedAttribute(value="configuration", readonly=true) public NativeWebSocketConfiguration getConfiguration() -
getMapping
Description copied from interface:MappedWebSocketCreator/** Returns the creator for the given path spec.- Specified by:
getMappingin interfaceMappedWebSocketCreator- Parameters:
target- the spec to test for (using the same spec syntax as seen inMappedWebSocketCreator.addMapping(String, WebSocketCreator))- Returns:
- the websocket creator if path spec exists, or null
-
init
public void init(javax.servlet.FilterConfig config) throws javax.servlet.ServletException - Specified by:
initin interfacejavax.servlet.Filter- Throws:
javax.servlet.ServletException
-
setToAttribute
public void setToAttribute(javax.servlet.ServletContext context, String key) throws javax.servlet.ServletException - Throws:
javax.servlet.ServletException
-
toString
-
addMapping(org.eclipse.jetty.http.pathmap.PathSpec, WebSocketCreator)instead