diff options
author | Jan Bartel | 2013-03-14 04:28:41 +0000 |
---|---|---|
committer | Jan Bartel | 2013-03-14 04:28:41 +0000 |
commit | cd47727ce491d6bb1984ac1f6934080abc608c90 (patch) | |
tree | f056102e2d62b0b8006eca1961c320f9bae33cde | |
parent | c5ace89ffd32a0c87f3512722eccbf27b05387dd (diff) | |
download | org.eclipse.jetty.project-cd47727ce491d6bb1984ac1f6934080abc608c90.tar.gz org.eclipse.jetty.project-cd47727ce491d6bb1984ac1f6934080abc608c90.tar.xz org.eclipse.jetty.project-cd47727ce491d6bb1984ac1f6934080abc608c90.zip |
402982 Premature initialization of Servlets
5 files changed, 43 insertions, 3 deletions
diff --git a/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/FilterHolder.java b/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/FilterHolder.java index 3f41d53271..e69910480a 100644 --- a/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/FilterHolder.java +++ b/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/FilterHolder.java @@ -97,7 +97,19 @@ public class FilterHolder extends Holder<Filter> super.stop(); throw new IllegalStateException(msg); } + } + + + + + + /* ------------------------------------------------------------ */ + @Override + public void initialize() throws Exception + { + super.initialize(); + if (_filter==null) { try @@ -123,6 +135,7 @@ public class FilterHolder extends Holder<Filter> _filter.init(_config); } + /* ------------------------------------------------------------ */ @Override public void doStop() diff --git a/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/Holder.java b/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/Holder.java index f67b635bf1..0b7a1fb8f0 100644 --- a/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/Holder.java +++ b/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/Holder.java @@ -82,6 +82,19 @@ public class Holder<T> extends AbstractLifeCycle implements Dumpable { return _extInstance; } + + + /* ------------------------------------------------------------ */ + /** + * Do any setup necessary after starting + * @throws Exception + */ + public void initialize() + throws Exception + { + if (!isStarted()) + throw new IllegalStateException("Not started: "+this); + } /* ------------------------------------------------------------ */ @SuppressWarnings("unchecked") diff --git a/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/ServletHandler.java b/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/ServletHandler.java index a413cab28b..9baefac40a 100644 --- a/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/ServletHandler.java +++ b/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/ServletHandler.java @@ -741,6 +741,7 @@ public class ServletHandler extends ScopedHandler try { h.start(); + h.initialize(); } catch (Exception e) { 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 8ff369ef0e..6de3b7e48b 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 @@ -280,7 +280,7 @@ public class ServletHolder extends Holder<Servlet> implements UserIdentity.Scope _enabled = enabled; } - + /* ------------------------------------------------------------ */ public void doStart() throws Exception @@ -319,7 +319,17 @@ public class ServletHolder extends Holder<Servlet> implements UserIdentity.Scope if (_class!=null && javax.servlet.SingleThreadModel.class.isAssignableFrom(_class)) _servlet = new SingleThreadedWrapper(); - + + } + + + /* ------------------------------------------------------------ */ + @Override + public void initialize () + throws Exception + { + super.initialize(); + if (_extInstance || _initOnStartup) { try @@ -335,7 +345,8 @@ public class ServletHolder extends Holder<Servlet> implements UserIdentity.Scope } } } - + + /* ------------------------------------------------------------ */ public void doStop() throws Exception diff --git a/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/AbstractDoSFilterTest.java b/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/AbstractDoSFilterTest.java index 044c6660ae..b81a1e44de 100644 --- a/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/AbstractDoSFilterTest.java +++ b/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/AbstractDoSFilterTest.java @@ -98,7 +98,9 @@ public abstract class AbstractDoSFilterTest public void startFilters() throws Exception { _dosFilter.start(); + _dosFilter.initialize(); _timeoutFilter.start(); + _timeoutFilter.initialize(); } @After |