Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Bartel2013-12-19 04:23:42 +0000
committerJan Bartel2013-12-19 04:23:42 +0000
commit801a33d367041ad1752ddfcae5348485ca928c25 (patch)
treee83c751184afc4eb51361f0221dc15eda43c864c
parent56b0fedf69c2e15efb58478ba21c39912d7c5ddb (diff)
downloadorg.eclipse.jetty.project-801a33d367041ad1752ddfcae5348485ca928c25.tar.gz
org.eclipse.jetty.project-801a33d367041ad1752ddfcae5348485ca928c25.tar.xz
org.eclipse.jetty.project-801a33d367041ad1752ddfcae5348485ca928c25.zip
424303 @ServletSecurity not applied on non load-on-startup servlets
-rw-r--r--jetty-servlet/src/main/java/org/eclipse/jetty/servlet/ServletHolder.java19
1 files changed, 19 insertions, 0 deletions
diff --git a/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/ServletHolder.java b/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/ServletHolder.java
index f4bea22bae..9e28d320e7 100644
--- a/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/ServletHolder.java
+++ b/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/ServletHolder.java
@@ -323,6 +323,8 @@ public class ServletHolder extends Holder<Servlet> implements UserIdentity.Scope
throw ue;
}
+ //check if we need to forcibly set load-on-startup
+ checkInitOnStartup();
_identityService = _servletHandler.getIdentityService();
if (_identityService!=null && _runAsRole!=null)
@@ -465,6 +467,23 @@ public class ServletHolder extends Holder<Servlet> implements UserIdentity.Scope
return isStarted()&& _unavailable==0;
}
+
+ /* ------------------------------------------------------------ */
+ /**
+ * Check if there is a javax.servlet.annotation.ServletSecurity
+ * annotation on the servlet class. If there is, then we force
+ * it to be loaded on startup, because all of the security
+ * constraints must be calculated as the container starts.
+ *
+ */
+ private void checkInitOnStartup()
+ {
+ if (_class==null)
+ return;
+
+ if ((_class.getAnnotation(javax.servlet.annotation.ServletSecurity.class) != null) && !_initOnStartup)
+ setInitOrder(Integer.MAX_VALUE);
+ }
/* ------------------------------------------------------------ */
private void makeUnavailable(UnavailableException e)

Back to the top