diff options
author | Jan Bartel | 2013-12-19 04:23:42 +0000 |
---|---|---|
committer | Jan Bartel | 2013-12-19 04:23:42 +0000 |
commit | 801a33d367041ad1752ddfcae5348485ca928c25 (patch) | |
tree | e83c751184afc4eb51361f0221dc15eda43c864c | |
parent | 56b0fedf69c2e15efb58478ba21c39912d7c5ddb (diff) | |
download | org.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.java | 19 |
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) |