Updated Branches: refs/heads/master 34f436421 -> dd47bd125
WICKET-5146 call #destroy() when #init() fails, since the web container will not do it Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/dd47bd12 Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/dd47bd12 Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/dd47bd12 Branch: refs/heads/master Commit: dd47bd125fd6fb5a11ee898881e767144e601835 Parents: 34f4364 Author: svenmeier <[email protected]> Authored: Fri Apr 19 11:53:38 2013 +0200 Committer: svenmeier <[email protected]> Committed: Fri Apr 19 11:53:38 2013 +0200 ---------------------------------------------------------------------- .../apache/wicket/protocol/http/WicketFilter.java | 28 +++++++++++++- 1 files changed, 26 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/dd47bd12/wicket-core/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java b/wicket-core/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java index be577f3..f40a0c9 100644 --- a/wicket-core/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java +++ b/wicket-core/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java @@ -431,6 +431,23 @@ public class WicketFilter implements Filter ThreadContext.detach(); } } + catch (Exception e) + { + // #destroy() might not be called by the web container when #init() fails, + // so destroy now + log.warn("initialization failed, destroying now"); + + try + { + destroy(); + } + catch (Exception destroyException) + { + log.warn("Unable to destroy after initialization failure", destroyException); + } + + throw new ServletException(e); + } finally { if (newClassLoader != previousClassLoader) @@ -578,7 +595,14 @@ public class WicketFilter implements Filter if (applicationFactory != null) { - applicationFactory.destroy(this); + try + { + applicationFactory.destroy(this); + } + finally + { + applicationFactory = null; + } } } @@ -781,7 +805,7 @@ public class WicketFilter implements Filter * level "/" then an empty string should be used instead. * * @param filterPath - * @return + * @return canonic filter path */ static String canonicaliseFilterPath(String filterPath) {
