Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoakim Erdfelt2014-09-18 18:11:31 +0000
committerJoakim Erdfelt2014-09-18 18:11:31 +0000
commit9b7b54ea0b7eae2dc31986963874b4ae3fbbdba7 (patch)
tree299b6ceb79afc7f5b769b858cb6476b57fd2b11f /jetty-websocket/websocket-server/src/main/java/org/eclipse/jetty/websocket
parent2a25402de0a12ca41d85dc95fa365dbd70a4a086 (diff)
downloadorg.eclipse.jetty.project-9b7b54ea0b7eae2dc31986963874b4ae3fbbdba7.tar.gz
org.eclipse.jetty.project-9b7b54ea0b7eae2dc31986963874b4ae3fbbdba7.tar.xz
org.eclipse.jetty.project-9b7b54ea0b7eae2dc31986963874b4ae3fbbdba7.zip
444517 - Ensure WebSocketUpgradeFilter is always first in filter chain
* Using Servlet 3.1's ServletContext.addFilter() mechanisms with its FilterRegistration to encourage the WebSocketUpgradeFilter to be first in the filter chain. Note: this is possible, but can be overridden by another call to the same ServletContext.addFilter() using the same techniques to put something in front of the WebSocketUpgradeFilter.
Diffstat (limited to 'jetty-websocket/websocket-server/src/main/java/org/eclipse/jetty/websocket')
-rw-r--r--jetty-websocket/websocket-server/src/main/java/org/eclipse/jetty/websocket/server/WebSocketUpgradeFilter.java45
1 files changed, 40 insertions, 5 deletions
diff --git a/jetty-websocket/websocket-server/src/main/java/org/eclipse/jetty/websocket/server/WebSocketUpgradeFilter.java b/jetty-websocket/websocket-server/src/main/java/org/eclipse/jetty/websocket/server/WebSocketUpgradeFilter.java
index b2a9deb092..374b072607 100644
--- a/jetty-websocket/websocket-server/src/main/java/org/eclipse/jetty/websocket/server/WebSocketUpgradeFilter.java
+++ b/jetty-websocket/websocket-server/src/main/java/org/eclipse/jetty/websocket/server/WebSocketUpgradeFilter.java
@@ -20,10 +20,13 @@ package org.eclipse.jetty.websocket.server;
import java.io.IOException;
import java.util.EnumSet;
+
import javax.servlet.DispatcherType;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
+import javax.servlet.FilterRegistration;
+import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
@@ -58,16 +61,48 @@ public class WebSocketUpgradeFilter extends ContainerLifeCycle implements Filter
public static WebSocketUpgradeFilter configureContext(ServletContextHandler context)
{
WebSocketPolicy policy = new WebSocketPolicy(WebSocketBehavior.SERVER);
-
WebSocketUpgradeFilter filter = new WebSocketUpgradeFilter(policy);
+
+ String name = "Jetty_WebSocketUpgradeFilter";
+ String pathSpec = "/*";
+ EnumSet<DispatcherType> dispatcherTypes = EnumSet.of(DispatcherType.REQUEST);
+
FilterHolder fholder = new FilterHolder(filter);
- fholder.setName("Jetty_WebSocketUpgradeFilter");
- fholder.setDisplayName("WebSocket Upgrade Filter");
+ fholder.setName(name);
+ context.addFilter(fholder,pathSpec,dispatcherTypes);
+
+ if (LOG.isDebugEnabled())
+ {
+ LOG.debug("Adding [{}] {} mapped to {} to {}",name,filter,pathSpec,context);
+ }
+
+ // Store reference to the WebSocketUpgradeFilter
+ context.setAttribute(WebSocketUpgradeFilter.class.getName(),filter);
+
+ return filter;
+ }
+
+ public static WebSocketUpgradeFilter configureContext(ServletContext context)
+ {
+ WebSocketPolicy policy = new WebSocketPolicy(WebSocketBehavior.SERVER);
+ WebSocketUpgradeFilter filter = new WebSocketUpgradeFilter(policy);
+
+ String name = "Jetty_Dynamic_WebSocketUpgradeFilter";
String pathSpec = "/*";
- context.addFilter(fholder,pathSpec,EnumSet.of(DispatcherType.REQUEST));
+ EnumSet<DispatcherType> dispatcherTypes = EnumSet.of(DispatcherType.REQUEST);
+ boolean isMatchAfter = false;
+ String urlPatterns[] =
+ {
+ pathSpec
+ };
+
+ FilterRegistration.Dynamic dyn = context.addFilter(name,filter);
+ dyn.addMappingForUrlPatterns(dispatcherTypes,isMatchAfter,urlPatterns);
if (LOG.isDebugEnabled())
- LOG.debug("Adding {} mapped to {} to {}",filter,pathSpec,context);
+ {
+ LOG.debug("Adding [{}] {} mapped to {} to {}",name,filter,pathSpec,context);
+ }
// Store reference to the WebSocketUpgradeFilter
context.setAttribute(WebSocketUpgradeFilter.class.getName(),filter);

Back to the top